【发布时间】:2011-09-17 16:56:22
【问题描述】:
我正在尝试删除 XML 文件中位于标签 和 之间的所有行。
作为第一次解决问题,我得到了一个正则表达式,它将匹配文件中的第一个键块,但它不会继续匹配文件中的其他块。我尝试将“/g”添加到正则表达式中,并且尝试使用“-0777”一次吞下整个文件,这两种技巧都没有任何区别。下面是 perl 单行:
perl -00 -ne 'print $1 if /(\s+\<KEYS\>\n\s+.*?\n\s+\<\/KEYS\>)/s' someFile.xml
我得到这个输出:
<KEYS> <KEY name="cone_id" type="long" nativeType="number(17)"/> <KEY name="bar_id" type="long" nativeType="number(32)"/> <KEY name="foo_type" type="int" nativeType="number(3)"/> </KEYS>
如上所述,文件中有更多块(将近 5000 行长),但 perl 代码不会与其余部分混淆。
有什么建议吗?
【问题讨论】:
-
是的,我认为有人会建议这样做,但我根本不关心 xml 结构。我只是剥离了恰好是 xml 的文本块。如果这是简单的古英语并且标签只是单词,我会遇到同样的问题。问题是围绕整个事情抛出另一个循环,所以它只是在文件中进行时重复正则表达式。