2013-10-02 124 views
0

鍵入命令行上執行以下操作:sed替換 1不工作

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是4.2.1 2010年12月

-r選項允許我使用\(\)。我認爲這也會啓用\1\2,但似乎並非如此。我還忽略了另一個選項嗎?

+0

的'-r'開關消除了對'(){} +需要''\\的|?'元字符 – potong

回答

1

在命令行中鍵入,外殼解釋一些你的反斜槓字符,所以sed永遠看不到它們。

請改爲嘗試其中之一。注意保留字面反斜槓字符的單引號。

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

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

你不需要-r只是使用

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