大容量ファイルの最初の行を編集しようとしていますが、すべての行を読むのをed
待つ必要があります。ファイル全体の読み取りをed
停止し、現在の行が最初の行になるようにすぐに編集を開始する方法はありますか?ed
答え1
Shellterが指摘したように、ed
これはできません。ほとんどの編集操作ではファイルを再作成する必要があり、その場所でのみ置き換えることができます。この場合を使用できますhexedit(1)
。
メモリを最も少なく使用する方法は、sed
交換などの操作を使用することです。八月そして6月最初の行:
sed '1s/August/June/' FILE > NEWFILE
答え2
ed
エディタでドキュメントを開いた後、ファイル全体の読み込みを停止したり、編集バッファの最初の行を現在の行に自動的に設定したりする方法はありません。
エディタはed
常にコマンドの影響を受ける最後の行(またはコマンドが直後または直前)にユーザーを配置し、起動時にファイルを読み取ることは、現在の編集バッファを破棄して指定されたファイルを開くをd
使用するのと似ています。e filename
現在の行をファイルから読み取った最後の行に設定します。
大きなドキュメントを非対話型に変更したい場合は、これらのツールがストリームで機能し、デフォルトでドキュメント全体をメモリに読み取らないため、より良い選択肢を使用またはsed
提供できます。awk
大容量の文書をインタラクティブに編集したい場合は、一緒に使用して文書を複数の塊に分割することをお勧めしますsplit
。ed
vi
cat
大容量ファイルの最初の5行編集用の仮想編集セッションed
:
$編集する まあ! head -n 5つの大容量ファイル 123 グラム/^/m0 うわー! {cat -; tail -n +6 大容量ファイル} > hugefile.new; 尋ねる
つまり、編集した出力を要求しますhead -n 5 hugefile
。ここで行う編集は、単に行を反転することです(g/^/m0
「最初の行の前に各行を順番に移動する」)。その後、変更された編集バッファはシェルコマンドに書き込まれ、バッファの内容を元のファイルの6行目以降の内容に関連付けます。結果は新しいファイル名に書き込まれます。Q
次にエディタを終了します。