如何使用sed命令替换括号而不丢失括号?

时间:2019-01-08 18:58:07

标签: linux ubuntu sed console

我正尝试在文件中搜索单词:"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 :(得分:0)

尝试:

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