sed 错误:OS X 下的“\1 未在 RE 中定义”

Erw*_*ann 2 osx sed

我正在使用OS X 10.10.5,当我尝试以下命令时:

$ ls foo*
foo123bar.pdf
$ for f in foo*; do echo "$f" | sed -E 's:foo:bar:';done
bar123bar.pdf
$ for f in foo*; do echo "$f" | sed -E 's:foo:(&):';done
(foo)123bar.pdf
$ for f in foo*; do echo "$f" | sed -E 's:\(foo\):(\1):';done
sed: 1: "s:foo:(\1):": \1 not defined in the RE
Run Code Online (Sandbox Code Playgroud)

我有一个错误。

我的问题是:如何纠正上面最后一个命令产生的错误?

cho*_*oba 8

在 下-E,您需要使用不带引号的括号来创建捕获组。

sed -E 's:(foo):(\1):'
Run Code Online (Sandbox Code Playgroud)