我需要使用 shell 脚本在两个模式之间插入一个大字符串

我需要使用 shell 脚本在两个模式之间插入一个大字符串

我有一个 HTML 文件,其中有一行注释如下:

<!-- tag1 --><!-- tag11 --> 

我需要JQ在它们之间插入一个文件元素。

我试过,可以插入小字符串,但我的字符串很大。有人能给我一个建议吗?

i=0
code="(jq -r '.["$i"].code' file.json)"; 
eval v=\$$code; 
sed -i 's/(<!-- tag1 -->)\(<!-- tag11 -->)/\1'$v'\2/' index.html;

它向我抛出了一个错误:

sed: -e expression #1, char 47: unterminated `s' command

然而:

v="xxxxxxx" 
sed -i 's/(<!-- tag1 -->)\(<!-- tag11 -->)/\1'$v'\2/' index.html;

字符串已完美插入,有人可以帮忙吗?

答案1

根据拉姆鲁马,您可以尝试将长字符串放入文件中,然后使用文件内容插入,如下所示:

sed -i "/teststring/r file1.txt" index.html

sed 手册 r标志用于读取文件内容。

相关内容