perlだけを使ってこんな感じにも書けますね。
#!/usr/bin/perl -w
#行数で範囲指定できるgrep
#使い方
#./mygrep.pl 開始行 終了行 パターン ファイル名
$start = shift(@ARGV);
$end = shift(@ARGV);
$pattern = shift(@ARGV);
print "$start行目〜$end行目までの$patternを含む行\n";
foreach $file (@ARGV) {
open(IN, $file) or die "$file : $!\n";
while (<IN>) {
if ($start <= $. and $. <= $end) {
print "$. > $_" if /$pattern/;
}
}
close(IN);
}