Reputation: 13
I'm new using xmlstarlet, as i got to no point using bash.
I try to replace many values in an XML file at once.
What i tried was:
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>
The value i want to change is
<property name="Stacknumber" value="50"/>
I want to change every value from the property Stacknumber with a value above 1 to 30000 like
<property name="Stacknumber" value="30000"/>
But I don't know how to select only properties with values above 1.
Upvotes: 0
Views: 283
Reputation: 88553
With valid XML:
xmlstarlet edit --omit-decl --update '//property[@name="Stacknumber"][@value>"1"]/@value' -v '30000' file.xml
If you want to edit file inplace, add option -L.
Output:
<items>
<item name="foodEggBoiled">
<property name="Stacknumber" value="30000"/>
<!-- This i want to change-->
</item>
<item name="foodEggRaw">
<property name="Stacknumber" value="1"/>
<!-- and this not-->
</item>
</items>
Upvotes: 1