• 締切済み

シェルでテキストファイルを半分削除する方法

シェルでテキストをファイルを半分削除することは可能でしょうか?ログファイルが大きくなりすぎてしまいこまっています。丸ごとコピー、削除を行いたくないので、半分削除、できれば半分削除して削除分を別ファイルとして保存したいと考えています。よろしくお願いします。

みんなの回答

  • tatsu99
  • ベストアンサー率52% (391/751)
回答No.2

>今回の場合ファイルがとてつもなく大きいので、元のファイルを残して分割ファイルを別途作成することができません。何かよい方法がないですかね 以下の方法が考えられます。 1案. 他のシステムのファイル領域を借用する。NFSを使用して、今回のログファイルが2つ分以上格納できる領域を確保し、そこで分割する。 もしくは、十分な空き領域のある他のシステムへログファイルをFTPで転送し、そこで分割する。 これが、もっとも簡単な方法ですが、他のシステムが使えることが前提です。 2案. 1案がだめなら、以下の方法です。 以下のようなプログラムを作ります。 1)ログファイルのnバイトを終端からよみ、他のファイル(新規)へ書き込む。 2)nバイト分をログファイルから削除する。 上記を繰り返す。 上記のプログラムは、シェルでは作成できません。 C言語,perl,ruby等なら可能です。 但し、改行のところで、分割はできませんので、改行単位で分けたい場合は、その為の補正作業が必要となります。

osiete2345
質問者

お礼

他のファイルシステムを使うか、プログラムを作るしかないのですね~どちかかの方法で対応を考えようと思います。ありがとうございます。

  • tatsu99
  • ベストアンサー率52% (391/751)
回答No.1

splitコマンドがあります。 split -l 1000 ログファイル とすると ログファイルを1000行単位に分割し、 xab,xaa等のファイルに出力してくれます。 詳細は man splitで確認して下さい。

osiete2345
質問者

補足

ありがごうございます。split でファイルを分割することはできるようになりました。ただ、今回の場合ファイルがとてつもなく大きいので、元のファイルを残して分割ファイルを別途作成することができません。何かよい方法がないですかね~

関連するQ&A

  • シェルにてファイルの自動削除をするには?

    シェルにて「abc.0101171109(.以降は年月日時分)」 というようなログファイルを一日3回、作成しています。 これを一週間、または一ヶ月たったら 自動的に削除するにはどうすればよいでしょうか。 OSはSolaris2.6で、 シェルはBでもCでも何でもかまいませんのでよろしくお願い致します。

  • 改行区切りのテキストを1行ずつ読み込むシェルを作りたい

    awkにて改行区切りのテキストファイルを読み込みテキストファイルに記述されているファイルを別のフォルダへコピーしたいと考えております。 file1=コピー対象ファイル名が書かれたテキストファイル DIR1=コピー先ディレクトリ cat $file1 |gawk '{print "cp",$file1,$DIR1}'|sh 上記をシェルでで実行しようとすると下記のようなエラーで帰ってきてしまいます。 ⇒ cp: `****' と `****' は同じファイルです よい方法をご存知でしたらぜひ御教授いただけませんでしょうか。コピーが目的ですので別のコマンドでも結構です。

  • excel2007のドロップダウンのシェル削除方法

    WEBで買い物をして、値段等の情報をコピーしてOffice2007 EXCELに貼り付けました。Excel上で張り付いた物を整理し、テキストだけで記録にとどめようとしました。、シェルの中に□ができて、右クリックするとドロップダウン(多分これだと思いますが不明です?)の内容が現れます。 これができたシェルは削除できません。ドロップダウンが入ったシェルの削除方法を教えてください。テキストだけにしたいのです。

  • シェル操作でファイルを削除

    現在、作前日の不要なファイルを削除するステップですするというシェルを作成したのですが、 #!/bin/sh set `date --date '1 days ago' '041125'` rm -f /ファイルパス/*$1.txt 何故か、041126に作成された全てのテキストファイルが削除されてしまいます。 何がおかしいのでしょうか?

  • ファイル内の改行を削除し1行にするシェル

    お世話になっております。 ファイル(テキスト)内には、改行を含んだ複数の行が記述されています。 これを1行にして上書き保存するシェルを実行をするための シェルを作成したいと思っています。 ファイル内には以下のような値が改行を含んで入っています。 123 456 789 →これを、「123456789」と改行を取り除き、既存のファイルの上書き保存をしたい なお、改行を含んだ対象のファイルは、ファイル名にある文字を含む ファイルのみに対して行いたいのですが。 例:ファイル名に、「*abc*」、「*def*」、「*xyz*」を含むファイルが対象 改行を取り除くコマンドはわかるのですが、シェルにするプロセスがわかりません。 cat 入力ファイル名 | tr -d '\n' > 変換後の出力ファイル名 ご教授いただきたく、よろしくお願いします。

  • コマンドシェルで古いファイルの削除

     コマンドシェルで一週間前のファイルを  対象に削除するというのを作りたいのですが  ご教授ください

  • シェルについて

    シェルの作成方法がわかりませんので教えてください。 シェルを実行することにより、 secureログファイルの「disconnect」という文字列を待ちます。 「disconnect」という文字列が出力されたら、 別のシェルを実行するというシェルを作成したいと考えています。 1.このようなシェルは作成することが可能でしょうか?   もし、可能でしたら例文を書いて頂ければ幸いです。 2.別のシェルを実行した後、   当初の「disconnect」という文字列を待つ状態に戻りと思いますが、可能でしょうか?   もし、可能でしたら例文を書いて頂ければ幸いです。 どうぞよろしくお願いします。

  • VBAで、テキストファイルの削除はどうするのでしょうか。

    VBA で、あるディレクトリにあらかじめ作成、保存してあるテキストファイルを、Input Box からそのファイル名を指定してExcel に読込み、所定の処理をした後、元のテキストファイルをディレクトリ上から削除するにはどうしたらよいでしょうか。 いつも決まった名前のファイルを削除するのは Kill コマンドで容易にできたのですが、InputBox から入力した任意の名前のファイルを削除する方法を教えていただけませんか。

  • テキストファイルのコピー

    あるデータ(数値が入ったデータ)をテキストファイルで保存しました。 で、これと全く同じテキストファイルを500個作りたいです。 そうなるとコピーして貼りつければ良いのですが、500個も作りたいので、1個1個コピーして貼りつけしたらかなりの時間がかかります。 いっぺんに1つのテキストファイルを500個コピーして全く同じテキストファイルを500個にしたい時はどうすればいいでしょうか? やり方ありますか? 詳しい方教えてください。

  • Cシェルでテキストファイルの行削除方法

    現在、Cシェルの勉強をしていますが、ある文言に完全一致した行のみ削除する方法が分かりません。 例として、下記のようなファイルがあり、"AAA"を指定して削除しようとすると、"AAA_1"までも削除されてしまいます。 例)test.txt AAA aaa AAA_1 aaa BBB bbb CCC ccc お手数ですがご教授いただけると幸いです。 以上、宜しくお願い致します。