如何使用 sed 在 xml 行中添加其他字段



我有一个像<Phase name="ABC" hold="yes">这样的字符串,我希望只有在 attr1 不存在时才让它变得<Phase name="ABC" hold="yes" attr1="yes">。我可以编程,我只想知道是否可以用一个简单的sed来做整个文件

sed 不是解析 XML 文件的正确工具。如果你坚持,那么你可以试试这个。

$ echo '<Phase name="ABC" hold="yes">' | sed 's/(<Phase name="[^"]*" hold="[^"]*")>/1 attr1="yes">/g'
<Phase name="ABC" hold="yes" attr1="yes">
$ echo '<Phase name="ABC" hold="yes">' | sed 's/(<Phase name="[^"]*" hold="yes")>/1 attr1="yes">/g'
<Phase name="ABC" hold="yes" attr1="yes">

sed 不是正确的工具,请检查 XMLLINT 或 XMLSTARLET。

后者可以就地编辑 XML 文件

这个awk应该做:

awk '/Phase name=/ && /hold=/ {sub(/>$/," attr1="yes"&")}1' file
<Phase name="ABC" hold="yes" attr1="yes">

最新更新