我匹配一个字符串,并希望在匹配后返回接下来的三行。 我知道$ _将返回该行,但我不确定使用什么表达式来返回我所拥有的文件中的下两行。 这里是我的代码:
open my $fh, '>', "${file}result.txt" or die $!;
$fh->print("$file\t$_\n");
print "$_\n";
提前感谢您的帮助,而不是太有趣。
答案 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;
这样做。
感谢。