我的xml文件中有以下行:
<domain-option name="security-domain" value="config2"/>
我应该使用sed设置新值,它不应该依赖于当前值。我的意思是,而不是config2可以是任何应该用新的替换的值)
我是
sed -i '/<domain-option name="security-domain"/!b;n;cvalue=new-value/>' test.xml
但它会创建新行,请帮助
答案 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