Perl Regex隔离文本块

时间:2014-05-14 18:59:58

标签: regex perl

我有一个很长的文本文件,如:

COMPONENT;SCALAR;VALUE
point1/point2 - Value Value Value
point1/point2 - Value Value Value
point1/point2 - Value Value Value
point1/point2 - Value Value Value
point1/point2 - Value Value Value
point1/point2 - Value Value Value
point1/point2 - Value Value Value

COMPONENT;SCALAR;VALUE
point3/point4 - Value Value Value
point3/point4 - Value Value Value
point3/point4 - Value Value Value
point3/point4 - Value Value Value
point3/point4 - Value Value Value
point3/point4 - Value Value Value
point3/point4 - Value Value Value

现在我已经提取了' point3 / point4'的所有唯一值类型的值..现在我要做的是提取整个数据块...例如从COMPONENT; SCALAR ----> \ n \ n(块末尾有两个新行)。现在我试图做的是

string =~ /(COMPO\S\spoint1\/point2)(.+?)(COMP)/s;
print $2;

但它不起作用。匹配应该只匹配到第一个' \ n \ n&n;捕捉最大值并不贪心任何一个班轮将非常感谢。

1 个答案:

答案 0 :(得分:1)

使用perl one衬垫。

perl -00 -ne 'print if m{point1/point2};' data.txt

唯一的诀窍是perlrun使用-00进行段落模式。