我是sed的新手,无法通过某些XML代码在XML标记之间查找和替换多行XML代码。以下是XML代码的示例
<List>
<User>
<Id>1234</Id>
<Info>
<Id>11</Id>
</Info>
</User>
</List>
我想将List标签之间的XMl代码替换为..
<List>
<Replace>
<Id> 223 <Id>
</Replace>
</List>
我用过
sed "s/\(<Id>\).*\(<\/Id\)/\19999\2/" input.xml > output.xml
但它适用于单行,但不适用于多行。 List标签之间的内容可能会更改,也可能是内联的。因此无法回复特定模式,但需要依赖于标签。任何帮助或指示将不胜感激?
答案 0 :(得分:0)
如果你真的想忽略林奇的建议,那就可以做到,但你需要重新美化它:
sed -e ':a;N;$!ba' -e 's#<List.*</List>#<List>\n<Replace>\n<Id> 223 <Id>\n</Replace>\n</List>#' input.xml > output.xml
它可能需要sed的GNU版本。