使用 xmlstarlet 打印匹配的 XPath?

使用 xmlstarlet 打印匹配的 XPath?

我想迭代许多 xml 文件以修复过时的配置条目,方法是获取所有匹配项,然后在第二步用更新的字符串(在本例中为多行脚本)替换每个条目。我知道如何查询/选择和打印元素的值,例如使用xmlstarletXPath

xmlstarlet sel -t -v '//hudson.tasks.Shell/command' $xml

或者如何使用列出所有 XPath

xmlstarlet el -a $xml

有没有办法输出有效的列表XPath每次匹配的表达式稍后都会使用此 XPath 字符串来更新第二步中的值?例如

maven2-moduleset/postbuilders/hudson.tasks.Shell[1]/command
maven2-moduleset/postbuilders/hudson.tasks.Shell[2]/command

我现在找到的唯一解决方案是从输出中计算路径el,然后通过索引循环它们(使用 bash)。

相关内容