Как заменить скобки, не теряя скобки, используя команду sed? - PullRequest
0 голосов
/ 08 января 2019

Я пытаюсь найти в файлах слово: "http://{$_SERVER["HTTP_HOST"]}"

и если я найду строку с этим элементом, я хочу добавить /suitecrm/ рядом с закрывающей фигурной скобкой "}"

или замените его на: 'http://{$_SERVER["HTTP_HOST"]}/suitecrm', но мне нужно выходить за скобки, не теряя их,

Как я могу это сделать? пожалуйста !!!

это мой код:

sudo grep -lir "HTTP_HOST" /var/www/html/suitecrm/ | xargs sudo sed -i 's,http://{$_SERVER["HTTP_HOST"]},http://{$_SERVER["HTTP_HOST"]}/suitecrm,g’ ;

1 Ответ

0 голосов
/ 08 января 2019

Попробуйте:

sed -i 's,http://{\$_SERVER\["HTTP_HOST"\]},http://{\$_SERVER\["HTTP_HOST"\]}/suitecrm,g’

Например:

$ echo 'http://{$_SERVER["HTTP_HOST"]}' | sed 's,http://{\$_SERVER\["HTTP_HOST"\]},http://{\$_SERVER\["HTTP_HOST"\]}/suitecrm,'
http://{$_SERVER["HTTP_HOST"]}/suitecrm

На самом деле я просто заменил $ до \$, [ до \[ и ] до \].
Она называется Escaping, некоторые символы имеют специальные значения в RE, когда вы обращаетесь к ним буквально, вы должны Escape их.

Проверьте это:
Игнорирует

...