使用shell脚本在配置文件中添加行

时间:2016-12-09 11:08:55

标签: linux bash shell sed ubuntu-14.04

我有一个config.js文件,其中包含字符串

.constant('Digin_Engine_API', 'http://local.net:1929/')

我想阅读此文件并替换.constant('Digin_Engine_API'我尝试使用sed但ddnt工作后的所有内容。这就是我用于sed的原因

sed -i 's/^.constant('Digin_Engine_API', .*/http://cloud.lk:8080/' /var/config.js

作为摘要,我的最终输出(config.js)文件需要包含在下面。

之前

.constant('Digin_Engine_API', 'http://local.net:1929/')

.constant('Digin_Engine_API', 'http://cloud.lk:8080/')

2 个答案:

答案 0 :(得分:2)

  • 你需要在sed命令周围使用双引号,因为单引号是模式的一部分
  • 您应该使用备用分隔符,因为/用于替换
  • 您需要捕获第一部分并将其用于替换
  • 您需要引用替换,并添加结束)

Sed命令:

sed -i.bak "s~\(\.constant('Digin_Engine_API', \).*~\1'http://cloud.lk:8080')~" /var/config.js

cat /var/config.js

.constant('Digin_Engine_API', 'http://cloud.lk:8080')

答案 1 :(得分:0)

你在这里:

sed -i -r "s_(\.constant\('Digin_Engine_API').*_\1, <new content>)_" file

<强>说明

  • 如果命令被'包围,则无法在sed命令中使用''
  • 您必须转义属于部分或字符串的所有(),而不是sed分组命令,
  • 你必须逃脱.字符,因为它也是每个字符的替代品,
  • 如果您需要在该命令中使用s,则必须使用其他sed /分隔符而不是/,但您也可以/之前\/转义add }。