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