linux - 如何使用 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’ ;
解决方案
尝试:
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
它们。
检查这个:
逃脱
推荐阅读
- google-chrome - 如何在基于 Chromium 的浏览器中查看下载错误日志?
- reactjs - 如何配置 React 以将登录表单包与主代码分开?
- r - 为什么 str_replace_all 没有替换 R 中的字符串?
- node.js - Sveltekit - 500 进程未定义或导出未定义
- c# - 当今天更改为第二天时,如何在asp.net中触发事件?
- performance - Selenium webdriver 需要 25 分钟来识别并单击一个元素
- r - 在 gt 中的行组行上重复列标签
- redis - 如何在 ubuntu 服务器 18.04 上将 redis 作为服务激活
- c++ - 关于作为类成员的对象
- javascript - 如何制作 SVG 组件?