使用sed更改xml中的值

时间:2016-11-13 22:23:19

标签: xml bash sed

我的xml文件中有以下行:

<domain-option name="security-domain" value="config2"/>

我应该使用sed设置新值,它不应该依赖于当前值。我的意思是,而不是config2可以是任何应该用新的替换的值)

我是

sed -i '/<domain-option name="security-domain"/!b;n;cvalue=new-value/>' test.xml

但它会创建新行,请帮助

1 个答案:

答案 0 :(得分:2)

如果您的xml文件保证在一行中使用此格式提供数据,则只需使用sed s命令(替换)而不是复杂的解决方案:

sed -r -i 's/(<domain-option name="security-domain" value=")([^"]*)/\1anotherval/' test.xml

我启用-r选项以避免转义括号。我创建了2个组并重新发布了第一个组,并用新的组替换了第二个组(旧值)。

注意:如果需要用env替换。变量你必须在某个时候退出单引号

newval=the_new_value
sed -r -i 's/(<domain-option name="security-domain" value=")([^"]*)/\1'"$newval/" test.xml