编辑xml文件shell脚本

时间:2016-04-18 14:42:13

标签: xml shell sh

我想使用shell脚本编辑xml文件。

我有这样的事情

#target div {
  background: green;
  height: 16px; width: 128px; padding: 10px;
}

#target div h1 {
  background: red;
  height: 16px; width: 64px; padding: 10px;
}

#target div h1 span {
  background: purple; display: block;
  height: 16px; width: 32px; padding: 10px;
}

我希望我的脚本使用变量

来编辑这样的.xml文件

ex:$ value = 3.2 ''命令更改xml文件''得到这个:

<div id="target"></div>

我一直在网上看,但没有什么对我有用..

编辑:我正在寻找一种通用方式。

例如此帖子的解决方案:How to change specific value of XML attribute using scripting on Mac

不是我正在寻找的东西,因为它取决于之前的xml文件。

1 个答案:

答案 0 :(得分:2)

使用sed:

$ ver=3.2;
$ sed "s/\(<version>\)[^<]*\(<\/version>\)/\1$ver\2/" <<< "<version>1.7.21</version>"
<version>3.2</version>

将其应用于档案:

$ ver=3.2;
$ sed -i "s/\(<version>\)[^<]*\(<\/version>\)/\1$ver\2/" file

-i选项用于编辑文件

更新:

要将sed命令应用于路径,必须转义路径中的斜杠:

ver="\/path\/to\/fix\/CHANGE.XML";

或使用您在路径中找不到的字符更改sed分隔符。 |的示例:

sed "s|\(<version>\)[^<]*\(<\/version>\)|\1$ver\2|"