替换shell中的xml值

50few1ms  于 2023-02-24  发布在  Shell
关注(0)|答案(2)|浏览(203)

我想用sed替换XML文件中的一个值:这是原点线:

<ns3:myID>aaa:bb:cc:dd::123-sd3-7b</ns3:myID>

我想替换<ns3:myID></ns3:myID>之间的值。
我试过了

sed -Ei - "s/(myID\>).*(<.*)$/\1${MY_NEW_VALUE}\2/" path.xml

它确实替换了该值,但生成了一个不可接受的新临时文件,有人知道一个sed命令行吗?该命令行可以就地替换上述值,而不生成任何临时文件。

igsr9ssn

igsr9ssn1#

就像这样:

xmlstarlet edit -L -N ns3='<NAMESPACE URL>' -u '//ns3:myID' -v NEW_VALUE file.xml
  • -L等于sed-i
  • 名称空间URL是xml文件中xmlns:ns3之后的内容。
hs1rzwqc

hs1rzwqc2#

一些实现需要-i的扩展(FreeBSD和MacOS的情况下,但不适用于OpenBSD和GNU/Linux)。这个非标准选项也可能有一些subtle meaning。您应该真正检查您正在使用的sed命令的文档,并意识到您的脚本的可移植性问题(如果通过脚本使用它)

相关问题