用于编辑 xml 文件的 bash 脚本
Posted
技术标签:
【中文标题】用于编辑 xml 文件的 bash 脚本【英文标题】:bash script to edit xml file 【发布时间】:2010-12-05 23:08:57 【问题描述】:我想编辑一个 XML 程序的配置文件:
<software>
<settings>
...
<setting name="local directory" type="string">/home/username/</setting>
...
</settings>
</software>
从 bash 脚本执行此操作的最简单方法是什么?
谢谢
【问题讨论】:
您要进行什么编辑? 本地目录的设置,其值 【参考方案1】:使用 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
【讨论】:
我没有 -L 选项来编辑,你使用的是哪个版本的 xmlstartlet 和 unix? 啊,太棒了 - -L 选项正是我想要的。【参考方案2】:根据您想要做什么,您可能想要使用一些特定于 XML 的工具(处理字符编码、维护 XML 格式正确等)。您可以使用普通的面向行的工具,但除非您小心(或做一些琐碎的事情),否则您很容易创建不兼容的 XML。
我使用XMLStarlet 命令行集。它是一组专门用于解析/操作 XML 的命令行实用程序。
【讨论】:
+1 到上面的评论,因为使用了花花公子这个词。 +1 发布以供参考。 但是默认安装的东西呢? @TomášZato, ...然后你最终会使用 Python(它内置了几个 XML 模块)。【参考方案3】:大多数人可能会使用 sed 从 bash 脚本进行行编辑。如果你 实际上关心解析 XML,然后使用 Perl 之类的东西,它有一个现成的 XML 解析器。
【讨论】:
这可能是解决问题的一种方法。但在这种情况下,请尝试为此添加一些示例代码。不要给出模糊的句子。【参考方案4】:一个丑陋/不安全但有时最简单的方法是从 bash 调用 sed/perl/awk
【讨论】:
以上是关于用于编辑 xml 文件的 bash 脚本的主要内容,如果未能解决你的问题,请参考以下文章