大きなファイルをその場で編集するにはどうすればよいですか?


18

サイズが1 GBを超えるファイルがいくつかあります。ファイルから最後の数バイトを削除する必要があります。どうすればいいですか?ディスクスペースを節約するために、ファイルをその場で編集することを好みます。

HP-UXを使用しています。


vim4Gの制限はあると思います(間違っている可能性があります)が、それが適切に機能しているとは思いません(間違っている可能性があります)。
xenoterracide

1
@xenoterracide:ここにはvimがありません:-(およびviは「Tmpファイルが大きすぎます」エラーを示します。
Hemant

1
@Hernant:そのメッセージは、その場での編集について知っておく必要があることすべてをあなたに伝えます:viは作業するために/ tmpにそれをコピーしようとしています。vimは同じことを行い、同じディレクトリにバックアップを作成するのが好きだと思います。
デビッドソーンリー

回答:


10

hexeditを使用してみてくださいHP-UXでは試していませんが、動作するはずです。ファイル内の場所に移動して切り捨てることができます。ファイル全体を読み取るのではなく、表示のために適切な場所を探すだけであると確信しています。

一度使用すると、矢印キーで移動できます。F1は助けを与えます。Ctrl-Gはファイル内の場所に移動します(ヒント:最後に移動するには、画面の一番下の行からファイルのサイズを使用します)。切り捨てる最初のバイトにカーソルを置き、切り捨てが完了したことを確認したら、Tキーを押します。Ctrl-xは終了します。



6

たとえば、ddを使用できます。

dd if=yourfile of=outname bs=4k count=thefirstX4kb

1
お返事をありがとうございます。ディスクスペースを節約するために、ファイルを適切に編集することを好みます。何も助けなければ、ddを使用します:-)。
ヘマント

6

truncateシステムコールにアクセスできるツールを使用します。POSIXツールでのみ実行できます。警告、ブラウザーに入力。dd通常のunixコマンドよりもさらに寛容なエラーであるため、特に注意してください。123456は保持するバイト数です。

dd if=/dev/null of=/file/to/truncate seek=1 bs=123456

Perlバージョンの方がはるかに読みやすくなっています。

perl -e 'truncate "$ARGV[0]", 123456 or die $!' /file/to/truncate

1

splitまたはedawkまたは任意のプログラミング言語を使用できます。


お返事をありがとうございます。ディスクスペースとメモリを節約するために、ファイルを適切に編集することを好みます。
ヘマント
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.