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

时间:2013-09-15 16:14:28

标签: sed

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

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

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

INCLUDE_XML

我们需要将INCLUDE_XML标记替换为xml-file中的整个内容。我们可以试试。

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文件中的字符的情况下进行替换?

1 个答案:

答案 0 :(得分:1)

只需使用sed的内置设施。

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

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