代码之家  ›  专栏  ›  技术社区  ›  Gabriel Solomon

编辑xml文件的bash脚本

  •  10
  • Gabriel Solomon  · 技术社区  · 15 年前

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

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

    谢谢

    4 回复  |  直到 10 年前
        1
  •  11
  •   TomáÅ¡ Zato    9 年前

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

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

        2
  •  20
  •   lmxy    14 年前

    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  
    
        3
  •  -4
  •   user181548 user181548    15 年前

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

        4
  •  -4
  •   dimba    15 年前

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