10

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

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

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

谢谢

4

4 回答 4

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  
于 2010-07-08T12:50:00.553 回答
11

根据您想要执行的操作,您可能需要使用一些特定于 XML 的工具(处理字符编码、维护 XML 格式正确等)。您可以使用普通的面向行的工具,但除非您小心(或做一些琐碎的事情),否则您很容易创建不兼容的 XML。

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

于 2009-10-12T12:03:55.227 回答
-4

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

于 2009-10-12T12:02:42.000 回答
-4

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

于 2009-10-12T12:16:58.913 回答