bash脚本编辑xml文件

时间:2009-10-12 11:56:07

标签: xml bash editing

我想编辑XML程序的配置文件:

<software>
   <settings>
       ...
       <setting name="local directory" type="string">/home/username/</setting>
       ...
   </settings>
</software>

从bash脚本执行此操作的最简单方法是什么?

由于

4 个答案:

答案 0 :(得分:20)

使用xmlstarlet:

xmlstarlet val -e file.xml
xmlstarlet ed -u "//settings/setting/@name" -v 'local directory2' file.xml
xmlstarlet ed -u "//settings[1]/setting/@name" -v 'local directory2' file.xml

# edit file inplace
xmlstarlet ed -L -u "//settings/setting/@name" -v 'local directory2' file.xml  

答案 1 :(得分:11)

根据您的目的,您可能希望使用某些特定于XML的工具(处理字符编码,维护XML格式良好等)。您可以使用常规的面向行的工具,但除非您小心(或做一些简单的事情),否则您可以轻松创建不符合要求的XML。

我使用XMLStarlet命令行集。它是一组用于专门解析/操作XML的命令行实用程序。

答案 2 :(得分:-4)

大多数人可能会使用sed从bash脚本进行行编辑。如果你 实际上关心解析XML,然后使用类似Perl的东西,它有一个现成的XML解析器。

答案 3 :(得分:-4)

丑陋/不安全但有时最简单的是从bash调用sed / perl / awk