Как заменить строку используя регулярное выражение в SED?

Добрый день.
Необходимо произвести массовую замену строки в файлах на сервере.
Строка имеет вид:
<?php
 ....
  include $_SERVER['DOCUMENT_ROOT'].'/file.php';    <--- даную строку
  ....
?>

Нужно заменить на:
<?php
....
include $_SERVER['DOCUMENT_ROOT'].'/NEWfile.php';
include $_SERVER['DOCUMENT_ROOT'].'/file.php';
....
?>


Пробовал с использованием регулярных выражений следующий образом:
find . -type f -name '*.html' -exec sed -i -r 's#include \$_SERVER\['DOCUMENT_ROOT']\.'\/file\.php';#include \$_SERVER\['DOCUMENT_ROOT']\.'\/NEWfile\.php';\ninclude \$_SERVER\['DOCUMENT_ROOT']\.'\/file\.php';#g' {} \;

Не выходит, перепробовал уже кучу вариантов, но рабочего так и не нашел.
Подскажите пожалуйста, что я делаю не так?
  • Вопрос задан
  • 242 просмотра
Пригласить эксперта
Ответы на вопрос 2
's/include \$_SERVER\[\x27DOCUMENT_ROOT\x27\]\.\x27\/file\.php\x27\;/111111111/'g

Изи я же писал по этому поводу в вики читайте в низу, там же приводится таблица спецсимволов.

Для удобства отладки рекомендую
https://sed.js.org/?gist=821124e809676c2b44c4e4ac2...

для отладки на вашей ОС удобно использовать ключ -e

sed -e 's///g' - принтует вывод на экран и уже после отладки заменте на -i
Ответ написан
Комментировать
p00h
@p00h
Фехтовальщик-стропальщик
sed -i "/include.*file.php/ i include \$_SERVER['DOCUMENT_ROOT']\.'\/NEWfile.php';"
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы