繁体   English   中英

bash脚本编辑xml文件

[英]bash script to edit xml file

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

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

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

谢谢

使用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  

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM