如何在外壳程序脚本中打印XML标记名称及其值

时间:2018-09-10 13:52:17

标签: xml shell sed xml-parsing tags

我有一个样本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标签及其值?

1 个答案:

答案 0 :(得分:0)

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

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

注意使用-c代替-v


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

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