Замена строки в текстовом файле кавычками и двойными кавычками с помощью sed - PullRequest
1 голос
/ 24 октября 2010

Допустим, я хочу заменить следующую строку в текстовом файле:

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 голос
/ 24 октября 2010
  1. Обратная косая черта должна быть экранирована вдвойне, так как они расширяются как sed, так и оболочкой. Используйте \\\\ (становится \\ в оболочке, затем \ в 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

Я заменил / на |, чтобы сделать его более читабельным (больше не нужно бежать /).

...