0

假设我们有一个内容 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 文件中的字符的情况下进行替换?

4

1 回答 1

1

只需使用sed的内置设施。

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

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

于 2013-09-15T16:23:31.860 回答