- 締切済み
シェルでテキストファイルを半分削除する方法
シェルでテキストをファイルを半分削除することは可能でしょうか?ログファイルが大きくなりすぎてしまいこまっています。丸ごとコピー、削除を行いたくないので、半分削除、できれば半分削除して削除分を別ファイルとして保存したいと考えています。よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- tatsu99
- ベストアンサー率52% (391/751)
>今回の場合ファイルがとてつもなく大きいので、元のファイルを残して分割ファイルを別途作成することができません。何かよい方法がないですかね 以下の方法が考えられます。 1案. 他のシステムのファイル領域を借用する。NFSを使用して、今回のログファイルが2つ分以上格納できる領域を確保し、そこで分割する。 もしくは、十分な空き領域のある他のシステムへログファイルをFTPで転送し、そこで分割する。 これが、もっとも簡単な方法ですが、他のシステムが使えることが前提です。 2案. 1案がだめなら、以下の方法です。 以下のようなプログラムを作ります。 1)ログファイルのnバイトを終端からよみ、他のファイル(新規)へ書き込む。 2)nバイト分をログファイルから削除する。 上記を繰り返す。 上記のプログラムは、シェルでは作成できません。 C言語,perl,ruby等なら可能です。 但し、改行のところで、分割はできませんので、改行単位で分けたい場合は、その為の補正作業が必要となります。
- tatsu99
- ベストアンサー率52% (391/751)
splitコマンドがあります。 split -l 1000 ログファイル とすると ログファイルを1000行単位に分割し、 xab,xaa等のファイルに出力してくれます。 詳細は man splitで確認して下さい。
補足
ありがごうございます。split でファイルを分割することはできるようになりました。ただ、今回の場合ファイルがとてつもなく大きいので、元のファイルを残して分割ファイルを別途作成することができません。何かよい方法がないですかね~
お礼
他のファイルシステムを使うか、プログラムを作るしかないのですね~どちかかの方法で対応を考えようと思います。ありがとうございます。