在命令行中键入以下内容:
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
,但似乎并非如此。我还有其他选择吗?
答案 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*/'