2010-11-09 119 views
1

我試圖找到替換以下sed的 - 匹配逃逸字符,反斜線+雙引號

<a href=\"test\"> 

<a href="test"> 

使用SED用。

我明白,無論是\"需要進行轉義,所以我做到以下幾點:

sed -i "s|a href=\\\"test\\\"|a href=\"test\"|g" 

但這似乎並沒有工作。任何想法我做錯了什麼?

回答

3

只需使用單引號而不是雙打。

 
$ echo '<a href=\"test\">' | sed "s|a href=\\\"test\\\"|a href=\"test\"|g" 
<a href=\"test\"> 

$ echo '<a href=\"test\">' | sed 's|a href=\\\"test\\\"|a href=\"test\"|g' 
<a href="test"> 

大利,如果你不能使用單引號,只需添加甚至逃逸:-)

 
$ echo '<a href=\"test\">' | sed "s|a href=\\\\\"test\\\\\"|a href=\"test\"|g" 
<a href="test"> 
+0

我已經接受了這個答案,因爲它的作品,即使我不能用它作爲我正在使用的真正的字符串還包括單引號! – EoghanM 2010-11-09 12:26:20

+2

@EoghanM,我發佈了另一個非單引號解決方案 - 這只是添加更多轉義的問題,因爲shell本身會吸引一個級別。 – paxdiablo 2010-11-09 12:31:35

+0

謝謝,做到了! 5個反斜槓!我其實嘗試了4,但認爲我變得荒謬! – EoghanM 2010-11-09 12:40:51