我有一个像<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">