2010-11-09 91 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