我想用sed替换XML文件中的一个值:这是原点线:
<ns3:myID>aaa:bb:cc:dd::123-sd3-7b</ns3:myID>
我想替换<ns3:myID>和</ns3:myID>之间的值。我试过了
<ns3:myID>
</ns3:myID>
sed -Ei - "s/(myID\>).*(<.*)$/\1${MY_NEW_VALUE}\2/" path.xml
它确实替换了该值,但生成了一个不可接受的新临时文件,有人知道一个sed命令行吗?该命令行可以就地替换上述值,而不生成任何临时文件。
igsr9ssn1#
就像这样:
xmlstarlet edit -L -N ns3='<NAMESPACE URL>' -u '//ns3:myID' -v NEW_VALUE file.xml
-L
sed
-i
xml
xmlns:ns3
hs1rzwqc2#
一些实现需要-i的扩展(FreeBSD和MacOS的情况下,但不适用于OpenBSD和GNU/Linux)。这个非标准选项也可能有一些subtle meaning。您应该真正检查您正在使用的sed命令的文档,并意识到您的脚本的可移植性问题(如果通过脚本使用它)
2条答案
按热度按时间igsr9ssn1#
就像这样:
-L
等于sed
的-i
xml
文件中xmlns:ns3
之后的内容。hs1rzwqc2#
一些实现需要
-i
的扩展(FreeBSD和MacOS的情况下,但不适用于OpenBSD和GNU/Linux)。这个非标准选项也可能有一些subtle meaning。您应该真正检查您正在使用的sed
命令的文档,并意识到您的脚本的可移植性问题(如果通过脚本使用它)