Perl-如何从文件中grep文本块

Perl-如何从文件中grep文本块,perl,grep,Perl,Grep,它可以是XML或任何文本格式。一般来说,如何在Perl中对文本块进行grep <track type="ws"> <range> <rangeStart>0</rangeStart> <rangeEnd>146.912</rangeEnd> <locationIndex>0</locationIndex> <propertyIn

它可以是XML或任何文本格式。一般来说,如何在Perl中对文本块进行grep

<track type="ws">
      <range>
       <rangeStart>0</rangeStart>
       <rangeEnd>146.912</rangeEnd>
       <locationIndex>0</locationIndex>
       <propertyIndex>0</propertyIndex>
      </range>
</track>
<track type="ps" id="1">
      <range>
       <rangeStart>0</rangeStart>
       <rangeEnd>146.912</rangeEnd>
       <locationIndex>1</locationIndex>
       <propertyIndex>1</propertyIndex>
      </range>
</track>

但是,如果不逐行读取文件,有没有更好的解决方案呢?

逐行读取只有在XML使用类似的换行符进行格式化时才有效,而这种情况可能不会发生。您应该使用真正的XML解析器


如果您的数据不是太大(几(几十)MB),那么您可以使用读取数据,然后遍历生成的数据结构。您还应该看一看。

只有在XML使用类似的换行符进行格式化时,逐行阅读才会起作用,而这种情况可能不会发生。您应该使用真正的XML解析器


如果您的数据不是太大(几(几十)MB),那么您可以使用读取数据,然后遍历生成的数据结构。您还应该看看。

比约恩绝对适合XML。对于您更一般的问题,您可能还对我最喜欢的每一行程序之一感兴趣:

perl -ne 'print if /type="cc"/../<\/range>/' input.txt
perl-ne'print if/type=“cc”/input.txt

Bjørn绝对适合XML。对于您更一般的问题,您可能还对我最喜欢的每一行程序之一感兴趣:

perl -ne 'print if /type="cc"/../<\/range>/' input.txt
perl-ne'print if/type=“cc”/input.txt

用于XML查看和。XML与纯文本的不同之处在于它不是面向行的,所以像grep、sed、awk或其他面向行的工具不能保证正常工作。

对于XML,请查看和。XML与纯文本的不同之处在于它不是面向行的,所以像grep、sed、awk或其他面向行的工具不能保证正常工作。

great!!谢谢我实际上是在寻找一种更通用的方法,而不是特定于xml的方法。。这很有效,太好了!!谢谢我实际上是在寻找一种更通用的方法,而不是特定于xml的方法。。这很有效。