最後の行の前にテキストN行を挿入する

最後の行の前にテキストN行を挿入する

最後の行より2行前に新しい行を挿入したいです。したがって、私の元のファイルが次のような場合:

1
2
3
4
5

結果は

1
2
3
New line
4
5

ベストアンサー1

使用ed:

$ printf '$-1i\nNew line\n.\n,p\n' | ed -s file
1
2
3
New line
4
5

スクリプトの編集ed:

$-1i
New line
.
,p

$-1まず、最後から1行上の行に移動()し、iその行の上に新しい内容を挿入()します。挿入された内容は1点で終わります(複数行を許可)。最後は、,p端末で完全に変更されたバッファを示しています。

新しいファイルにリダイレクトするか、以下を使用して元のファイルに書き換えることができます。

printf '$-1i\nNew line\n.\nw\n' | ed -s file

,pに変更w)。

後者もexこのタスクで使用されます。

printf '$-1i\nNew line\n.\nw\n' | ex -s file

edex標準行ベースのエディタ(フルスクリーンエディタではありません)で、システムに付属している必要があります。これは-s人によって異なる意味を持ちますが、このようなバッチモード編集操作を実行するときは両方に適用されます。

  • ed。 「シェルとユーティリティ」 基本仕様。 IEEE 1003.1:2017。グループを開きます。
  • ex。 「シェルとユーティリティ」 基本仕様。 IEEE 1003.1:2017。グループを開きます。

追加資料:

  • デール・ドハティとチーム・オライリー(1987)。 「シニアエディタ」。Unixテキスト処理。ヘイデンブックス。

おすすめ記事