mac の sed で t コマンドがうまく動かない
foo を bar に、 bar を foo に sed で変換したいと思いました。
sed -e 's/foo/bar/; t; s/bar/foo/'
ひとまず、上記を記述してみたのですが、これは実際に実行すると、エラーになります。
sh-3.2$ printf 'foo\nbar\n' | sed -e 's/foo/bar/; t; s/bar/foo/'
sed: 2: "s/foo/bar/; t; s/bar/foo/
": undefined label '; s/bar/foo/'
man sed
を見てみたところ、以下のような記述があるので、これで動かない理由がわからないです。
[2addr]t [label]
Branch to the ``:'' function bearing the label if any substitutions
have been made since the most recent reading of an input line or
execution of a ``t'' function. If no label is specified, branch to
the end of the script.
質問
どうして、この t
function は動かないのでしょうか?
環境
- macOS 10.14.6
man sed
の結果:May 10, 2005
の BSD のものである、と書いてある。