通过bash替换XML文件中的值
我有一个XML文件,我正在尝试通过bash脚本中的xmlstarlet进行编辑,但我找不到任何XML格式与此相同的示例。下面是xml通过bash替换XML文件中的值,xml,bash,xmlstarlet,Xml,Bash,Xmlstarlet,我有一个XML文件,我正在尝试通过bash脚本中的xmlstarlet进行编辑,但我找不到任何XML格式与此相同的示例。下面是xml <?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> <section name="StringCollections" type="ALINetCoreConsole.Config.StringCollections,
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="StringCollections" type="ALINetCoreConsole.Config.StringCollections, ALINetCoreConsole"/>
</configSections>
<appSettings>
<add key="TCPAddress" value="192.168.xx.xx"/>
<add key="TCPPort" value="2101" />
<add key="ParsingFilesDirectory" value="/app/aliparsing"/>
<add key="MessageBossAddress" value="messageboss:9092"/>
<add key="AliRulesetReloadMinutes" value="30"/>
<add key="PsapId" value=""/>
<add key="MessageStarter" value="2"/>
<add key="MessageEnder" value="3"/>
<!-- Possible values are: Warn, Info, Debug -->
<add key="LogLevel" value="Warn"/>
</appSettings>
<StringCollections>
<HeartbeatValues>
<add message="K"/>
<add message="H"/>
</HeartbeatValues>
</StringCollections>
</configuration>
我试图通过xmlstarlet更改的特定值是value=192.168.xx.xx
到目前为止,我已经找到了删除整行的方法,但是有些东西并没有按正确的语法来更改值字段中的IP地址
我目前编写了使用sed查找和替换IP的脚本,但它很难看,并且依赖于cut/rev,因此如果出于某种原因,特定行的末尾有额外的空间或类似的内容,那么它将失败。我正在寻找使用xmlstarlet的更优雅、更可靠的解决方案。使用xmlstarlet更新属性:
xmlstarlet edit --update '//add[@value="192.168.xx.xx"]/@value' --value '1.2.3.4' file.xml
或
欢迎来到StackOverflow!最好包括您所做的工作,以便我们可以帮助您。通常情况下,这不是一个代码编写服务-更多的是帮助我摆脱困境。我道歉。我做过很多尝试,我做过的一件事,赛德,非常难看。我更多的是寻找做我想做的事情所需要的语法,但我不知道如何在没有为我编写代码的情况下要求它。绝对完美。非常感谢你。我理解处理任何其他值的语法。
xmlstarlet edit --update '//add[@key="TCPAddress"]/@value' --value '1.2.3.4' file.xml