我需要将字符串替换为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命令忽略复制文本中的反斜杠。或者我该如何做为盲目替换。
请帮助
答案 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
逐行读取输入,并在处理后将其打印