首页 > 解决方案 > 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

解决方案


尝试:

$ 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'],
...

问题在于,[并且]是正则表达式活动字符。 [引入了一个字符类。你想[作为一个文字字符。获得它的方法是[用反斜杠转义\[. 同样对于].


推荐阅读