我有一个像<Phase name="ABC" hold="yes">
这样的字符串,我希望只有当attr1不存在时才会成为<Phase name="ABC" hold="yes" attr1="yes">
。
我可以编程,我只想知道是否可以用一个简单的sed来完成整个文件
答案 0 :(得分:1)
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">
答案 1 :(得分:0)
sed不是正确的工具,请检查xmllint或xmlstarlet。
后者可以编辑XML文件就地
答案 2 :(得分:0)
此awk
应该:
awk '/Phase name=/ && /hold=/ {sub(/>$/," attr1=\"yes\"&")}1' file
<Phase name="ABC" hold="yes" attr1="yes">