在执行sed时如何忽略文件中的特殊字符

时间:2018-09-25 18:06:45

标签: javascript sed

我需要将字符串替换为json文件的内容。所以我的代码就像

value=$(<minified.json)
sed -i -e "s/<!--MyJson-->/$value/" file.html

我需要将json文件的内容替换为file.html中的<!--MyJson-->字符串。

发生问题是因为json中的某些数组元素具有/,因此它会因错误而失败

sed: -e expression #1, char 438: unknown option to `s'

但是我无法在json中更改该文本。因此,如何使我的sed命令忽略复制文本中的反斜杠。或者我该如何做为盲目替换。

请帮助

1 个答案:

答案 0 :(得分:1)

您可以在替换中使用不同的定界符:

sed -i -e "s%<!--MyJson-->%$value%" file.html

(json中未使用提供的%

或者切换到Perl,其中变量是一等公民,而不仅仅是像在shell中那样扩展宏:

value=$value perl -i~ -pe 's/<!--MyJson-->/$ENV{value}/' -- file.html
  • -p逐行读取输入,并在处理后将其打印
  • ENV哈希包含环境变量,在同一行上设置变量会将其导出到以下命令