SSED删除多行XML代码

时间:2012-12-06 21:20:51

标签: xml scripting batch-file batch-processing multiline

我正在尝试使用SSED从XML文件中删除多行。我能够删除XML文件中的某些单行,但我需要能够删除多行。

例如:

<tagnumberone>
   <tagInside>This must not be deleted</tagInside>
</tagnumberone>
<tagnumberone>
   <tagInside>This must be deleted</tagInside>
</tagnumberone>
<tagnumberone>
   <tagInside>This must not be deleted</tagInside>
</tagnumberone>

那么这意味着我需要能够删除代码行这必须删除&gt;然后它也是如此,以便得到以下结果:

<tagnumberone>
   <tagInside>This must not be deleted</tagInside>
</tagnumberone>
<tagnumberone>
   <tagInside>This must not be deleted</tagInside>
</tagnumberone>

我正在尝试使用以下Super Sed突击队: ssed s:\<tagnumberone\>\<tagInside\>This must be deleted\<\/tagInside\>\<\/tagnumberone\>:: <file.xml >out.xmle

这给了我以下错误:unterminated's'命令。

我错过了什么吗?

谢谢!

2 个答案:

答案 0 :(得分:0)

可能您忘记了“必须删除”中的空格。您是否尝试引用行参数?

ssed "s:\<tagnumberone\>\<tagInside\>This must be deleted\<\/tagInside\>\<\/tagnumberone\>::" <file.xml >out.xmle

答案 1 :(得分:0)

我找到了解决方案。实际上,我不知道它为什么会起作用,但它确实有效。如果有人现在可以向我解释下面的代码,那就太棒了:

ssed /<tagnumberone>/!b;N;N;/<tagnumberone>\s*\n\s*<tagInside>This must be deleted<\/tagInside>\s*\n\s*<\/tagnumberone>/d <oldFile >newFile

谢谢!