在shell中为XML属性的值添加前缀/后缀

时间:2017-10-30 21:43:36

标签: shell

我试图编写一个shell脚本来正确格式化字符串。更具体地说,我给出了这种格式的字符串属性:

<property name="resource" value="example"/>

我正在尝试编写一个shell脚本,将其更改为:

<property name="resource" value="$R{example}"/>

我必须跨多个属性和&#34;示例&#34;所有这些属性的字符串都不同。

1 个答案:

答案 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