例アクション:行にが含まれている場合はfoo
それをに置き換えbar
、それ以外の場合はbaz
行に追加します。
sed -e s/foo/bar/ -e s/$/baz/
最初のコマンドが一致しているかどうかにかかわらず、2番目のコマンドが実行されるため、機能しません。sed
ゲームが終了したら、次の行に移動するようにゲームに指示する方法はありますか?
ベストアンサー1
t
正常な交換後に次のサイクルを開始するには、ラベルなしでコマンドを使用できます。
$ cat ip.txt
a foo 123
xyz
fore
1foo
$ sed -e 's/foo/bar/' -e t -e 's/$/baz/' ip.txt
a bar 123
xyzbaz
forebaz
1bar
マニュアルから:
tタグ(テスト)
最後の入力行を読み取った後、または条件分岐を実行してから交換が成功した場合にのみラベルに分岐します。ラベルは省略できます。この場合、次のサイクルが開始されます。