【问题标题】:How to print XML tag names along with their values in shell script如何在 shell 脚本中打印 XML 标记名称及其值
【发布时间】:2019-02-14 23:29:05
【问题描述】:

我有一个样本pom.xml。我需要将特定的 XML 标记及其值打印到另一个 XML。我能够提取标签的值,但我无法沿标签名称打印。

XML 代码:

<dependency>
<job>xmlparsing</job>
<version>1.0</version>
</dependency>

使用的命令:

sed -ne '/<\/job>/ { s/<[^>]*>\(.*\)<\/job>/\1/; p }

实际输出:

xmlparsing

预期输出:

<job>xmlparsing</job>

如何修改 sed 命令以打印 XML 标记及其值?

【问题讨论】:

    标签: xml shell sed xml-parsing tags


    【解决方案1】:

    如果您可以安装和使用 xmlstarlet,这将是首选方式:

     xmlstarlet sel -t -c '//dependency/job' pom.xml
    

    注意使用-c 而不是-v


    如果您必须使用sed 替换\1(第一个\( \) 对中匹配的内容)\0(与整个正则表达式匹配的内容)应该做诀窍,但是用正则表达式解析xml并不好:

    sed -ne '/<\/job>/ { s/<[^>]*>\(.*\)<\/job>/\0/; p }
    

    【讨论】:

      猜你喜欢
      • 2022-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-16
      • 1970-01-01
      • 1970-01-01
      • 2018-04-10
      • 2011-04-08
      相关资源
      最近更新 更多