它可以是 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>
我想 greptype="ps"
并得到一切,直到</range>
.
一种解决方案是打开文件,逐行读取,然后匹配块。
open(FH, "file.txt");
foreach $line (<FH>) {
if ($line =~ m/type="cc"(.*?)<\/range>/) {
print $1;
}
}
但是如果不逐行读取文件,是否有更优化的解决方案?