Bash - 在包含给定字符串的行之后粘贴文件的内容

时间:2012-12-03 14:32:24

标签: bash

非常感谢您提前帮助!

我有一个名为source.xml的长文件 我想创建一个bash脚本,在source.xml中插入2 xml文件的内容(请参阅下面的名称和url),代之以下两行:

<include url="%SWFPATH%/scenes/corrugated_external/corrugated_cement_sheets/index.xml"/>
<include url="%SWFPATH%/scenes/corrugated_external/defining_asbestos/index.xml"/>

因为我需要通过几十个目录运行脚本,所以我无法真正指定任何文件夹名称。 我认为解决这个问题的最佳方法是:

1-合并两个index.xml文件(我已经完成了这个)

2-在包含'include'

的行之前或之后插入合并文件

3-删除任何包含'include'的行(我知道该怎么做)

如何实现这一目标?

谢谢!

2 个答案:

答案 0 :(得分:2)

有些事情:

sed -e "/<include url=.../r /path/to/corrugated_cement_sheets/index.xml" -e '/<include url=...>/d' source.xml

当然,您必须为另一个执行此操作,并使用要替换的完整字符串替换include url = ....在这种情况下:

<include url="%SWFPATH%/scenes/corrugated_external/corrugated_cement_sheets/index.xml"/>

答案 1 :(得分:0)

虽然您可以使用标准的基于文本的工具执行此操作,但我建议您使用支持XML的工具,例如XMLStarlet。为什么?

  1. 它会尊重XML结构
  2. 它将尊重XML字符和实体编码