快速摘要:我需要创建一个
Bash脚本,每周自动更改一个节点内的文本.脚本将匹配节点并替换其中的文本(如果可能的话)?我该怎么做?
长摘要:
我主持一个Minecraft服务器,它有一个商店,每个都有自己的.xml文件放在/ ShowcaseStandalone / ffs-storage /目录中.每个星期天我的服务器重新启动并执行几个命令到终端重置几件事情.我想改变的一件事是商店之一.我想要更改节点< itemstack>中的文本和节点< price>中的文本.我只是想从另一个文件夹中的.txt文件中取出文本,并将其插入该节点.问题是,节点中的文本将每周更改.有没有办法使用bash来替换两个节点内的特定行或文本?
XML文件:
<?xml version="1.0" encoding="UTF-8"?> <scs-shop usid="cac8480951254352116d5255e795006252d404d9" version="2" type="storage"> <enchantments type="string"/> <owner type="string">Chadward27</owner> <world type="string">Frisnuk</world> <itemStack type="string">329:0</itemStack> <activity type="string">BUY</activity> <price type="double">55.0</price> <locX type="double">487.5</locX> <locY type="double">179.0</locY> <locZ type="double">-1084.5</locZ> <amount type="integer">0</amount> <maxAmount type="integer">0</maxAmount> <isUnlimited type="boolean">true</isUnlimited> <nbt-storage usid="23dffac5fb2ea7cfdcf0740159e881026fde4fa4" version="2" type="storage"/> </scs-shop>
操作系统:Linux Ubuntu 12.04
您可以使用
xmlstarlet
在shell中编辑XML文件,如下所示:
xmlstarlet edit -L -u "/scs-shop/price[@type='double']" -v '99.66' file.xml
注意
>“/ scs-shop / price [@ type =’double’]”是一个Xpath表达式>请参阅xmlstarlet ed –help