gpt4 book ai didi

xml - 使用 bash 脚本在 xml 中设置单个属性的属性值

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:55:20 26 4
gpt4 key购买 nike

我正在使用这个 XML 文件:https://github.com/apache/ranger/blob/master/ugsync/src/test/resources/ranger-ugsync-site.xml

现在,我必须将以下属性的值更新为 false。

<property>
<name>ranger.usersync.group.usermapsyncenabled</name>
<value>true</value>
</property>

为了将 XML 中的属性值更新为 false,我在 bash 脚本中使用以下命令来完成更新。

tag1=<name>ranger.usersync.group.usermapsyncenabled</name>
file=xml_file.xml
temporary=temp.xml

grep -A1 $tag1 $file | grep -v $tag1 | sed -e "s/^.*<value>/<value/" | sed -e "s/<value>true<\/value>/<value>false<\/value>/g" $file > $temporary

问题:脚本正在将文件中所有其他属性的值从 true 更新为 false。我只需要更新这个属性的值而不是其他的。输入/帮助表示赞赏。谢谢!

最佳答案

使用 XMLStarlet :

xmlstarlet ed \
-u "//property[name='ranger.usersync.group.usermapsyncenabled']/value" \
-v false \
<in.xml >out.xml

用于确定要更改的内容的 XPath 表达式确保我们只修改 property 下具有适当 namevalue

关于xml - 使用 bash 脚本在 xml 中设置单个属性的属性值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48977278/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com