繁体   English   中英

Bash脚本,用于更新部分XML元素值

[英]Bash script for updating part of XML element value

我需要一个bash脚本来根据其他一些动态属性更新XML元素值的一部分。

例如,XML文件:

<?xml version="1.0"  encoding="ISO-8859-1"?>
 <Configure class="org.eclipse.something">
   <Set name="foo">foo-val</Set>
   <Set name="bar">bar-val</Set>
   <Set name="my-elm">/dont/matter/THIS_ONE_NEED_TO_BE_UPDATED</Set>
 </Configure>

尝试将xmlstarlet与正则表达式一起使用,但未提供我想要的结果。 我正在使用OSX 10.12。

在下面的xpath表达式中使用xmlstarlet对我来说很好。 下面的表达式对XML文件进行即时替换( -L标志)

xmlstarlet edit -L -u "/Configure/Set[@name='my-elm']" -v '/dont/matter/THIS_ONE_NEED_TO_BE_UPDATED' xml-file

删除-L标志以检查替换是否正确进行,并在成功添加后进行添加。

OS X上检查xmlstarlet (1.6.1)

虽然它是严格NOT建议使用sedxml的更新,这下面的逻辑会为你工作,

sed "s/\(<Set name=\"my-elm\".*>\)[^<>]*\(<\/Set.*\)/\1\/dont\/matter\/THIS_ONE_NEED_TO_BE_UPDATED\2/" xml-file

添加-i.bak用于文件的就地替换。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM