我需要使用sed命令对xml文件进行更新,但这个命令有问题。它需要在windows(使用cygwin)和linux上运行。
XML具有以下元素:
...
<parameter name="jersey.test.host" value="localhost" />
...
我需要将值更新为任意值,比如“abc”。
我尝试了几个命令,例如:
sed -i "s#\(jersey.test.host\)\s*value="\(.*\)" />$#\1abc#" "C:\file.xml"
以及:
sed -i "s#<parameter name="jersey.test.host" value=".*" />#<parameter name="jersey.test.host" value="abc" />#"" "C:\file.xml"
但在运行命令时不会对文件执行任何更改,我敢打赌这意味着我没有正确匹配。
我不介意我也能用awk做这个。不管怎样,只要在windows+cygwin和linux中都可以使用相同的命令。
有人能帮我解决这个问题吗?任何一个指点都非常感谢!
谢谢!
最佳答案
如果sed命令包含双引号,则应将其括在单引号(或转义双引号)中。
应使用以下命令:
sed -i 's#<parameter name="jersey.test.host" value=".*" />#<parameter name="jersey.test.host" value="abc" />#' "C:\file.xml"