Perl:匹配多行

时间:2019-07-23 18:38:37

标签: regex perl line

使用perl regex,如果连续两行匹配,则计算行数。

我要直到匹配模式的行数

D001
0000
open ($file, "$file") || die; 
   my @lines_f = $file;
   my $total_size = $#lines_f +1;

   foreach my $line (@lines_f)
   {
       if ($line =~ /D001/) {
           $FSIZE = $k + 1;
       } else { 
           $k++;}
    }  

我还想检查下一行是否是0000,而不是D001。如果是,则$ FSIZE是$ file的大小。 $ file看起来像这样

00001 
00002
.
.
.
D0001
00000
00000

1 个答案:

答案 0 :(得分:1)

这里是一个例子。如果找不到标记线,则会将$FSIZE设置为undef

use strict;
use warnings;

my $fn = 'test.txt';
open ( my $fh, '<', $fn ) or die "Could not open file '$fn': $!";
chomp (my @lines = <$fh>);
close $fh;

my $FSIZE = undef;
for my $i (0..$#lines) {
    if ($lines[$i] =~ /D0001/) {
        if ( $i < $#lines ) {
            if ( $lines[$i+1] =~ /00000/ ) {
                $FSIZE = $i + 1;
                last;
            }
        }
    }
}