2010-10-24 192 views
1

文本文件替換字符串可以說,我想一個文本文件中替換以下字符串:與引號和雙引號用sed的

document.write(unescape("%3Cscript src='" + \ + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E")); 

我想出了這個sed命令,但令人驚訝的沒有任何反應都沒有。

sed -i "s/document.write(unescape(\"%3Cscript src=\"\' + \\ + \"google-analytics.com\/ga.js\' type=\'text\/javascript\'%3E%3C\/script%3E\"));//g" myfile.html 

這裏有什麼不對嗎?

回答

1
  1. 反斜槓應該被雙重轉義,因爲它們被sed和shell擴展。使用\\\\(成爲殼\\,然後\sed
  2. 你在src="'匹配,但你的文件中包含src='"

使用

sed -i \ 
"s|document.write(unescape(\"%3Cscript src='\" + \\\\ + \"google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E\"));||g" \ 
myfile.html 

我把它換成/|以使其更具可讀性(不再需要逃避/)。

+0

謝謝,我不知道管道技巧。但是,這個也不行嗎? 「s/document.write(unescape(\」%3Cscript src ='\「+ \\\\ + \」google-analytics.com \ /ga.js'type ='text \/javascript'%3E% 3C \/script%3E \「)); // g」 – user485751 2010-10-25 08:21:52

+0

應該可以工作,但是在進一步編輯您的命令之前我決定使用管道。順便說一下,它不僅可以使用'|',還可以使用其他字符(參見'sed'手冊)。 – 2010-10-25 08:52:02