我正在尝试仅使用Linux CLI工具处理XML文件。 我想解决的主要问题是将特定XML标记的内容复制到新标记中,如下所示:
<date>Wednesday</date>
<name>The Name</name>
<anotherattribute>Attribute</anotherattribute>
成:
<date>Wednesday</date>
<id>The Name</id>
<name>The Name</name>
<anotherattribute>Attribute</anotherattribute>
我一直在尝试使用sed来解决这个问题,并且能够识别标签,并将其复制到保留缓冲区中:
/<name>/{
h
i\
<id>
G
a\
</id>
}
但结果是:
<date>Wednesday</date>
<id>
<name>The Name</name>
<name>The Name</name>
</id>
<anotherattribute>Attribute</anotherattribute>
非常感谢任何帮助。
答案 0 :(得分:1)
试试这个:
sed '/<name>/{h;s/name>/id>/g;G}'
您还可以尝试xmlstarlet
:
cat input.xml |
xmlstarlet ed -i //name -t elem -n id -v '' |
xmlstarlet ed -u //id -x '../name'