我正在尝试在文件中搜索单词:"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’ ;

最佳答案

尝试:

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

检查一下:
Escapes

09-11 20:54