【发布时间】:2020-03-27 09:20:43
【问题描述】:
我正在尝试使用sed 替换大型配置文件中的字符串,但由于自动化要求,需要通过脚本完成。
目前这是我的测试文件 -
# The below line should get modified.
var HOSTED_VIEWER_ORIGINS = ['null', 'http://mozilla.github.io', 'https://mozilla.github.io'];
这是我当前的脚本摘录 -
#/bin/bash
ORIGINSORIGINAL="var HOSTED_VIEWER_ORIGINS = ['null', 'http://mozilla.github.io', 'https://mozilla.github.io'];"
ORIGINS="var HOSTED_VIEWER_ORIGINS = ['https://s3-host1.lab.example.com', 'https://s3-host1.prod.example.com', 'null', 'http://mozilla.github.io', 'https://mozilla.github.io'];"
sed -i "s@${ORIGINSORIGINAL}@${ORIGINS}@g" /tmp/sedtest.txt
由于某种原因,sed 没有匹配到字符串,并且没有发生替换。鉴于原始字符串中包含单引号,我是否有明显遗漏的内容或是否需要转义 sed 命令的一部分。
谢谢!
【问题讨论】:
-
搜索字符串中的方括号是元字符,必须小心引用。由于您在双引号中使用变量,因此您必须特别小心,并且可能会反引号...
-
@PaulHodges 就是这样 - 转义时的方括号(使用更一般的搜索)使这变得如此简单。谢谢!
-
大声笑——发布了一个例子,你打败了我。 ;)
-
@PaulHodges 将您的标记标记为正确,因为您已经确定了它 - 再次非常感谢!