我试图编写一个shell脚本来正确格式化字符串。更具体地说,我给出了这种格式的字符串属性:
<property name="resource" value="example"/>
我正在尝试编写一个shell脚本,将其更改为:
<property name="resource" value="$R{example}"/>
我必须跨多个属性和&#34;示例&#34;所有这些属性的字符串都不同。
答案 0 :(得分:2)
应使用支持XML的工具编辑XML文档。构建用于shell的一个这样的工具是XMLStarlet。
xml='<property name="resource" value="example"/>'
xmlstarlet ed -O \
-u '//property[@name="resource"]/@value' \
-x 'concat("$R{", ., "}")' \
<<<"$xml"
......正确发出:
<property name="resource" value="$R{example}"/>
如果您想为所有属性执行此操作,而不是仅对名为resource
的属性执行此操作,请删除[@name="resource"]
子句,使相关参数仅为-u //property/@value