sed - sedスクリプトで同じファイルを複数回渡す

sed - sedスクリプトで同じファイルを複数回渡す

sed ドキュメントでは、「sed は入力を一度だけ渡すことで動作します」と読みました。

sed -f my_script.sed以前にスクリプトで行った操作を含む、複数のタスクを実行するsedスクリプト(次のように実行)を作成したいと思います。

編集されたストリームコンテンツに対して2番目(またはn番目)のパスを実行できますか?

たとえば、

  • 初期ストリームコンテンツ:

titi

  • 最初の通過後のコンテンツストリーミング:
/titi/ i (
/titi/ a )
$ cat test.txt
(
titi
)
  • 再び通過:
s/(/{/g
s/)/}/g

出力が欲しいです。

$ cat test.txt
{
titi
}

.sedこれは、単一のスクリプト内で前のコマンドに影響を与えるストリームバージョンを実行する例です。

ベストアンサー1

sed1つの入力ストリームパスのみを取得します。これはマニュアルページ(少なくともFedora 33では)に明確に記載されています。

これを行う必要があるたびに、後続の編集のsedために出力を2番目のインスタンスにパイプします。sed

おすすめ記事