【发布时间】:2013-12-22 02:32:20
【问题描述】:
针对 Bash ninjas 的问题:我有一个 XML 模板文件,其中包含一些模板标记,格式为 {{VARIABLE_NAME}},并且希望使用文本文件的内容查找/替换该标记的所有出现。
所以想象template.xml 看起来像这样:
<?xml>
<root>
<description>
{{DESCRIPTION}}
</description>
</root>
我有一个名为description.txt 的文本文件,它可能包含任何字符(为简单起见,我们假设它已经是 xml 安全的)。我想用文件的内容替换标记,支持换行符和其他字符。
以前我一直在这样的代码中执行此操作(这对简单的字符串很有用):
sed -i '' -e "s/{{DESCRIPTION}}/$DESCRIPTION/g" template.xml
但是,如果 $DESCRIPTION 包含换行符,sed 会拒绝:
sed: 1: "s/{{DESCRIPTION}}/Hello w ...": unescaped newline inside substitute pattern
有没有更好的方法来做到这一点,或者我应该首先搜索/替换 $DESCRIPTION 变量中的所有换行符。还有其他我需要转义的字符吗,比如/?
【问题讨论】: