命令行使用内联定义的值修改xml属性

时间:2013-10-03 00:26:44

标签: xml bash command-line sed

我有一个像这样的xml属性:

<property name="foo" value="bar"/>

并希望将值“bar”修改为其他任何内容。有没有标准的命令行工具呢?我很难让sed玩得很好,我不确定我应该逃避哪些角色。

2 个答案:

答案 0 :(得分:1)

xmlstarlet是一个功能齐全的XML工具。

xmlstarlet ed --update /property/@value -v qux <<END
<property name="foo" value="bar"/> 
END
<?xml version="1.0"?>
<property name="foo" value="qux"/>

添加-O以省略XML声明行。

答案 1 :(得分:1)

使用awk

echo '<property name="foo" value="bar"/>' | awk '{sub(/bar/,"new")}1'
<property name="foo" value="new"/>

另一个版本

echo '<property name="foo" value="bar"/>' | awk -F\" '{$4="new"}1' OFS=\"
<property name="foo" value="new"/>