Regex 查找并替换一堆XML标记

Regex 查找并替换一堆XML标记,regex,shell,vim,scripting,Regex,Shell,Vim,Scripting,我有一个简单的问题。我有一个巨大的文件,其中包含数百万XML格式的数据。我必须找到所有的标签如下,并取代他们没有。有关于vim或sed的帮助吗 <dtlsEntry> <dataTyp></dataTyp> <dataDtls></dataDtls> </dtlsEntry> 如果您注意到这一点,则xml标记中不存在任何值。我想删除从dtlsEntry到dtlsEntry的完整XML,如

我有一个简单的问题。我有一个巨大的文件,其中包含数百万XML格式的数据。我必须找到所有的标签如下,并取代他们没有。有关于vim或sed的帮助吗

    <dtlsEntry>
    <dataTyp></dataTyp>
    <dataDtls></dataDtls>
    </dtlsEntry>


如果您注意到这一点,则xml标记中不存在任何值。我想删除从dtlsEntry到dtlsEntry的完整XML,如注释所示,使用单个正则表达式可靠地执行此操作在一般情况下可能很困难或不可能。但你可能有一个非常具体的案例。再加上任何复杂性,它很快就会变得丑陋。如果XML中的注释不存在,属性也不存在,并且如果顺序得到保证,那么应该在Vim中这样做,但速度可能会很慢:

:%s#<dtlsEntry\_s*>\_s*<dataTyp\_s*></dataTyp\_s*>\_s*<dataDtls\_s*></dataDtls\_s*>\_s*</dtlsEntry\_s*>##
:%s\\\\\\\\\\\\\\\\\\\\\s*##

我在这里使用的唯一技巧是在允许任意空白的地方插入
\\u s*
,以匹配任何空白,包括换行符。例如,如果dataTyp标记中有空格,则可能需要添加更多的空格。但是,请再次注意上面所有的警告和限制。消除这些限制会增加复杂性;事实上,特别是允许充分的评论支持可能会使这几乎不可能。

强制性链接;使用“数百万数据”,很难验证一致的格式是一致使用的(除非你用心了解XML源代码),而且XML工具(如<代码> XSLTPROC )是比较好的。我们不要把它看作“MiLION”。让它成为1000个这样的XML标记。您能发布一个您想要的输入和输出示例吗?在我看之前,我想100%确定我知道你的意思;nor属性;订购是有保证的。我已经在vim中尝试了你的命令,它正在工作。让我写一个包装器脚本。非常感谢!!