我想通过bash shell脚本编辑XML文件。我一直在寻找解决方案-如果可以通过bash shell脚本解决此问题,请分享您的建议。
我想将-Dcustom.properties = / fs0 / share / custom.properties值添加到applicationServerInstance标记中的jvmParameters属性(如果不存在)。
输入文件:
<?xml version="1.0" encoding="UTF-8"?>
<properties>
<applicationServer>
<applicationServerInstance id="app" serviceName=" App Server" rmiPort="15001" jvmParameters="-Xmx3072m" maxThreads="1000" programParameters="" distributed="false"/>
</applicationServer>
<blah>
</blah>
<blah abc="123">
</blah>
</properties>
理想输入文件(以上文件应如下更新):
<?xml version="1.0" encoding="UTF-8"?>
<properties>
<applicationServer>
<applicationServerInstance id="app" serviceName=" App Server" rmiPort="15001" jvmParameters="-Xmx3072m -Dcustom.properties=/fs0/share/custom.properties" maxThreads="1000" programParameters="" distributed="false"/>
</applicationServer>
<blah>
</blah>
<blah abc="123">
</blah>
</properties>
以@Kenazov提出的答案为基础:
#!/usr/bin/env bash
INPUT=input.xml;
OUTPUT=config.xml
xmllint --format $INPUT |\
sed '/<applicationServerInstance/{/-Dcustom.properties=\/fs0\/share\/custom.properties/!s/\(jvmParameters="[^"]*\)"/\1 -Dcustom.properties=\/fs0\/share\/custom.properties"/}' \
> $OUTPUT
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句