【发布时间】:2018-12-02 00:04:40
【问题描述】:
我是使用 xmlstarlet 的新手,因为我没有使用 bash。
我尝试一次替换 XML 文件中的多个值。
我尝试的是:
xmlstarlet ed -L -u "/items/item/property[@name='Stacknumber']/@value" -v '30000' items.xml
<items>
<item name="foodEggBoiled">
<property name="Stacknumber" value="50"/> <!-- This i want to change-->
</item>
<item name="foodEggRaw">
<property name="Stacknumber" value="1"/> <!-- and this not-->
</item>
</items>
我要改变的值是
<property name="Stacknumber" value="50"/>
我想将属性 Stacknumber 中值大于 1 的每个值更改为 30000,例如
<property name="Stacknumber" value="30000"/>
但我不知道如何只选择值大于 1 的属性。
【问题讨论】:
-
欢迎来到 SO。 Stack Overflow 是面向专业和热情的程序员的问答页面。将您自己的代码添加到您的问题中。您应该至少展示自己为解决这个问题所做的研究。
-
您在显示的 XML 中的根(截至revision 3 是
item,查询在其中查找items。尝试构建正确的minimal reproducible example 也会有所帮助--请注意该规范的 M 初始部分,这意味着不应显示与问题无关的任何内容(以及 Complete / Verifiable 规范,这意味着显示的代码应该足够完整,有人可以看到问题——也许您应该包含 两个不同的“Stacknumber”,一个应该更改,一个不应该更改,以完成足以测试答案)。 -
对所有的混乱感到抱歉 - 我对 SO 完全陌生。
标签: xml linux bash xmlstarlet