【发布时间】:2018-04-29 06:28:16
【问题描述】:
我有一个包含如下数据的 xml 文件
<temp>
<a="something" total="50" b="something" total="0" c="something" total="20">
</temp>
我需要得到总计的第一个值,即 50,但我的 sed 解决方案是给出最后一次出现的总计值,即 20
sed -n 's/.*total="\([^"]*\).*/\1/p' temp.xml
输出:20
所需输出:50
感谢您的帮助。谢谢
【问题讨论】:
-
三个属性同名不是错吗?
-
贪婪匹配会吃掉最后一个“总数”
-
您不使用支持 XML 的工具有什么原因吗?
//a/@total将在任何 XPath 处理器中提取您的50。 (XMLStarlet、非古代 xmllint 等)。 -
...虽然这实际上不是带有
<a="something"的有效 XML,但我认为这是错误的总结。 -
我给出的示例不是有效的 xml。我们的 aix 服务器上没有安装 xml 感知工具