sed - соответствующий escape-символ, обратный слеш + двойная кавычка - PullRequest
2 голосов
/ 09 ноября 2010

Я пытаюсь найти заменить следующее

<a href=\"test\">

с

<a href="test">

с использованием sed.

Я понимаю, что и \, и " необходимо экранировать, поэтому я делаю следующее:

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

но это не похоже на работу. Есть идеи, что я делаю не так?

1 Ответ

4 голосов
/ 09 ноября 2010

Просто используйте одинарные кавычки вместо двойных.

$ 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">

Ori, если вы не можете использовать одинарные кавычки, просто добавьте даже more escape: -)

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