2012-12-03 38 views
0

非常感谢您提前帮助!Bash - 在包含给定字符串的行之后粘贴文件的内容

我有一个名为source.xml 长文件我想提出一个bash脚本插入的2个XML文件(见他们的名字和下面的网址)内source.xml内容如下两行代:

<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-插入之前或含有“包括行后合并文件“

3-删除包含任何行‘包括’(我知道如何做到这一点)

如何才能做到这一点?

谢谢!

+0

是否必须在Bash中完成? – Tuim

回答

0

虽然你可以用标准的基于文本的工具来做到这一点,但我会推荐使用支持XML的工具,如XMLStarlet。为什么?

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

东西:

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

Ofcourse,你必须为做到这一点其他一个aswell和替换包括url = ...与您要替换的完整字符串。在这种情况下:

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

+1 - 不错,但是这也会在包含文件之前打印出

+0

我已经更新了我的答案。 – Tuim

+0

感谢您的回答,但恐怕我无法使用您的建议。我将通过几十个文件运行此脚本,因此我无法指定包含index.xml文件的文件夹名称的名称。我会更新我的问题,提供更多详细信息...无论如何,谢谢 – RafaelGP

相关问题