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

时间:2014-12-09 04:33:25

标签: regex sed

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

3 个答案:

答案 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)

不是正确的工具,请检查

后者可以编辑XML文件就地

答案 2 :(得分:0)

awk应该:

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