sed - sed 不会用特殊字符替换字符串
问题描述
我一直在尝试替换包含以下行的某个配置文件:
exports.config = {
uncomment in case of directConnect = false
seleniumAddress: 'http://localhost:4444/wd/hub',
//===run only one spec===
specs: ['specs/login.js'],
...
我想替换 规范:['specs/login.js'],符合 规范:['specs/register.js'],
我尝试了很多不同的东西,但它们都没有真正影响当前的行。它始终保持不变。这是我尝试过的几件事。
sudo sed -i -e "s/specs: ['specs\/login.js']/specs: ['specs\/register.js']/g" conf.js
这条线保持不变。
line_old='specs: [\'specs\/login.js\']'
line_new='specs: [\'specs\/register.js\']'
sed -i -e "s%$line_old%$line_new%g" conf.js
但它仍然没有工作。有任何想法吗?
解决方案
尝试:
$ sed -e "s/specs: \['specs\/login.js'\]/specs: ['specs\/register.js']/g" conf.js
exports.config = {
uncomment in case of directConnect = false
seleniumAddress: 'http://localhost:4444/wd/hub',
//===run only one spec===
specs: ['specs/register.js'],
...
问题在于,[
并且]
是正则表达式活动字符。 [
引入了一个字符类。你想[
作为一个文字字符。获得它的方法是[
用反斜杠转义\[
. 同样对于]
.
推荐阅读
- docker - 当我在容器中访问 nginx 时,我得到 curl: (56) Recv failure: Connection reset by peer
- vue.js - 更改窗口大小时饼图消失
- javascript - 从自定义构建的 HTML 指令生成 JavaScript 代码
- java - 如何判断是否选择了switch case?
- reactjs - 反应箭头功能
- ios - XCTest 即使在满足期望后也失败了
- python - 用于手语识别的 resnet 模型的准确性没有提高
- node.js - 我不断收到“传入的参数必须是 12 个字节的单个字符串或 24 个十六进制字符的字符串”错误
- jquery - JQuery Select2使用参数而不是ajax远程数据添加自定义函数
- javascript - 使用动态路由部署 Next JS 应用程序时出错