
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
sed
1つの入力ストリームパスのみを取得します。これはマニュアルページ(少なくともFedora 33では)に明確に記載されています。
これを行う必要があるたびに、後続の編集のsed
ために出力を2番目のインスタンスにパイプします。sed