我有一个类似这样的文件
1 XXXX jimmy XXXXX XXXXX
2 XXXX johny XXXXX XXXXX
3 XXXX jimmy XXXXX XXXXX
4 XXXX jimmy XXXXX XXXXX
5 XXXX johny XXXXX XXXXX
仅当当前行有 jimmy 且连续行有 johny 时,我才想循环遍历文件并打印行
我已经编写了代码来检查下一行是否当前行与模式匹配,但编码并未循环遍历每一行,例如我得到的
上述文件的输出为
1 XXXX jimmy XXXXX XXXXX
2 XXXX johny XXXXX XXXXX
以下是我的代码的一部分
while($line=<ABC>){
$c1=(split (/\s+/, $line))[1];
if($c1 eq 'jimmy'){
$i=0;
while ($i<1){
$line2 = <ABC> ;
$i++;
$c12=(split (/\s+/, $line2))[1];
if($c12 eq 'johny') {
print $line."\n".$line2."\n";
}
最佳答案
#!/usr/bin/perl
use strict;
use warnings;
my $ln;
while(my $line = <DATA>){
if($ln && $ln =~ /jimmy/ && $line =~ /johny/){
#print whatever you need to
print "ln is: $ln line is $line";
}
$ln = $line;
}
__DATA__
1 XXXX jimmy XXXXX XXXXX
2 XXXX johny XXXXX XXXXX
3 XXXX jimmy XXXXX XXXXX
4 XXXX jimmy XXXXX XXXXX
5 XXXX johny XXXXX XXXXX
关于regex - 检查当前行和下一行中的模式时的 Perl 循环问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27357017/