我匹配一个字符串,并希望在匹配后返回接下来的三行

时间:2014-10-20 23:27:57

标签: regex string perl line match

我匹配一个字符串,并希望在匹配后返回接下来的三行。 我知道$ _将返回该行,但我不确定使用什么表达式来返回我所拥有的文件中的下两行。 这里是我的代码:

open my $fh, '>', "${file}result.txt" or die $!;
       $fh->print("$file\t$_\n");
       print "$_\n";

提前感谢您的帮助,而不是太有趣。

2 个答案:

答案 0 :(得分:1)

保持简单:

while (<$infile>)
{
    if (/REGEX/)
    {
        $outfile->print($_);
        $outfile->print($infile->getline) for 0 .. 1;
    }
}

由于几个原因,IO::Handle方法很不错。 $infile->getline<>类似,但只能抓取一行(而<>将返回列表上下文中的所有行)。它也不会破坏$_或在文件末尾发出警告(尽管有时候后一种行为是可取的)。

答案 1 :(得分:0)

#!/usr/bin/perl

open (FH, "input.txt") or die $!;

my @contents = <FH>;
my $count = 0;

map
{
   $count ++;
   if($_ =~ /This/)
   {
       print "\nNext 3 lines:\n$contents[$count+1] $contents[$count+2] $contents[$count+3]";
   }
} @contents;

这样做。

感谢。