如何在匹配模式的行之后访问所有行 例如
BCDA
ABCD
AAAABBBBCCCCDDD
AAAAAABBBBBBCCC
AAAAAAAAAAAAAA
所以基本上在模式ABCD匹配后我想处理它之后的所有行。把它放在一个数组中。所以只进行一次模式匹配。
答案 0 :(得分:4)
这是我能想到的最简单的例子。 它将“后面的所有行”放入匹配成数组的行中。
my @lines;
while ( <$in> ) {
next unless m/ABCD/;
# in an list context, this will slurp the rest of the file.
@lines = <$in>;
}
答案 1 :(得分:3)
有点不清楚,但这就是你追求的目标吗?
range operator适用于此类任务:
#!/usr/bin/perl
my @array;
while (<DATA>) {
push @array, $_ if /ABCD/ .. 0
}
shift(@array);
print @array;
__DATA__
BCDA
ABCD
AAAABBBBCCCCDDD
AAAAAABBBBBBCCC
AAAAAAAAAAAAAA
输出:
AAAABBBBCCCCDDD
AAAAAABBBBBBCCC
AAAAAAAAAAAAAA