sed replacement \ 1不工作

时间:2013-10-02 01:12:34

标签: sed ubuntu-12.04

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

    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) shell是-ksh sed是2010年12月4.2.1

-r选项允许我使用\(\)。我认为它也会启用\1\2,但似乎并非如此。我还有其他选择吗?

2 个答案:

答案 0 :(得分:1)

您只需使用

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

答案 1 :(得分:1)

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

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

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

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