0

在命令行中键入以下内容:

    echo happy | sed -r s/\([p]\)\([p]\)/*\1*\2*/

我期待以下结果:

    ha*p*p*y

相反,这是结果:

    ha*1*2*y

我正在使用 Ubuntu 12.04.3 LTS(GNU/Linux 3.2.0-53-generic x86_64)外壳是 -ksh sed 是 2010 年 12 月 4.2.1

-r 选项允许我使用\(and \)。我认为它也可以启用\1\2但似乎并非如此。还有另一个我忽略的选择吗?

4

2 回答 2

1

你不需要-r只使用

echo happy | sed  's/\(p\)\([p]\)/*\1*\2*/'
于 2013-10-02T01:21:33.827 回答
1

在命令行上键入时,shell 会解释一些反斜杠字符,因此sed永远不会看到它们。

相反,请尝试其中一种。注意保留文字反斜杠字符的单引号。

echo happy | sed -r 's/([p])([p])/*\1*\2*/'

或者

echo happy | sed 's/\([p]\)\([p]\)/*\1*\2*/'
于 2013-10-02T01:22:38.843 回答