ed:最初の行をデフォルトの現在の行に設定

ed:最初の行をデフォルトの現在の行に設定

大容量ファイルの最初の行を編集しようとしていますが、すべての行を読むのをed待つ必要があります。ファイル全体の読み取りをed停止し、現在の行が最初の行になるようにすぐに編集を開始する方法はありますか?ed

答え1

Shellterが指摘したように、edこれはできません。ほとんどの編集操作ではファイルを再作成する必要があり、その場所でのみ置き換えることができます。この場合を使用できますhexedit(1)

メモリを最も少なく使用する方法は、sed交換などの操作を使用することです。八月そして6月最初の行:

sed '1s/August/June/' FILE > NEWFILE

答え2

edエディタでドキュメントを開いた後、ファイル全体の読み込みを停止したり、編集バッファの最初の行を現在の行に自動的に設定したりする方法はありません。

エディタはed常にコマンドの影響を受ける最後の行(またはコマンドが直後または直前)にユーザーを配置し、起動時にファイルを読み取ることは、現在の編集バッファを破棄して指定されたファイルを開くをd使用するのと似ています。e filename現在の行をファイルから読み取った最後の行に設定します。

大きなドキュメントを非対話型に変更したい場合は、これらのツールがストリームで機能し、デフォルトでドキュメント全体をメモリに読み取らないため、より良い選択肢を使用またはsed提供できます。awk

大容量の文書をインタラクティブに編集したい場合は、一緒に使用して文書を複数の塊に分割することをお勧めしますsplitedvicat


大容量ファイルの最初の5行編集用の仮想編集セッションed

$編集する
まあ! head -n 5つの大容量ファイル
123
グラム/^/m0
うわー! {cat -; tail -n +6 大容量ファイル} > hugefile.new;
尋ねる

つまり、編集した出力を要求しますhead -n 5 hugefile。ここで行う編集は、単に行を反転することです(g/^/m0「最初の行の前に各行を順番に移動する」)。その後、変更された編集バッファはシェルコマンドに書き込まれ、バッファの内容を元のファイルの6行目以降の内容に関連付けます。結果は新しいファイル名に書き込まれます。Q次にエディタを終了します。

関連情報