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 のものである、と書いてある。