我的文件看起來像這樣:如何在Perl中匹配一行後抓取多行?
1 15
2 16
3 18
4 19
5 25
6 30
7 55
8 45
9 34
10 52
如果匹配圖案是30線6,我想抓住前N行和M行的第6行之後,例如,如果N = 3和M = 4所以結果預計是這樣的:
3 18
4 19
5 25
6 30
7 55
8 45
9 34
10 52
我是一個非常新的Perl初學者,任何意見將不勝感激。
#UPDATE 非常感謝以下這些有用的建議,我非常感謝他們。 這是我更新的代碼,歡迎任何建議!
my $num;
while(<>)
{
if (/pattern/)
{$num = $. ;}
}
open (,"") || die ("Can't open the file");
while(<>)
{
if ( $. >= $num-N and $. <=$num+M)
{
print OUT "$_ \r";
}
}
是否可以在彼此的4行內找到兩個匹配項?如果是這樣,那麼是什麼? – ikegami 2013-05-06 02:54:19
除非您將此作爲學習練習,否則您可能會考慮ack或grep:'ack'30'--before-context 3 - 之後上下文4 DATA_FILE'。 – FMc 2013-05-06 03:18:55
@FMc非常感謝您對ack和grep的建議,並非常感謝。這只是我在Perl上的學習練習。 – Sam 2013-05-06 12:41:55