将单词标签替换为整个文件内容



>假设我们有一个内容xml文件:

<field name="id" id="1" type="number" default="" />

假设我们有带有标签的模板文件:

INCLUDE_XML

我们需要将INCLUDE_XML标签替换为 xml 文件中的整个内容。我们可以试试。

tpl_content=$(<tpl.xml)
xml_content=$(<cnt.xml)
xml_content="$(echo "$tpl_content" | sed "s/INCLUDE_XML/"$xml_content"/g")"
echo "$xml_content" > out.xml

问题是unterminated 's' command因为 xml 文件有很多祝福字符(引号、斜杠等)。如果不关心内容 xml 文件中的字符,我们如何进行替换?

只需使用sed的内置设施即可。

sed -e '/INCLUDE_XML/!b' -e 'r cnt.xml' -ed tpl.xml >out.xml

翻译:如果当前输入行与正则表达式不匹配,请继续。否则,请读入并打印另一个文件,然后删除当前行。

最新更新