首页 > 解决方案 > 如何使用 sed 命令替换括号而不丢失括号?

问题描述

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

标签: linuxubuntusedconsole

解决方案


尝试:

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

实际上我只是批量替换$了 to \$[to\[]to \]
它被称为Escaping,某些字符在 RE 中具有特殊含义,当您从字面上引用它们时,您必须使用Escape它们。

检查这个:
逃脱


推荐阅读