我有一个input.dat
看起来像这样的文件:
ZZZ 111
ABC 523
ABC 835
ADD 234
ZZZ 222
ABC 0007
2935
ABC 4
ABC 893
wdq
ZZZ 333
ABC 777
ABC 00
之后我可以提取字符串,ABC
但我需要每一次出现一次。所以我不能单独用正则表达式来区分,我认为循环可以处理这个问题。为了只在 ABC 的一行中获得第二个条目,我尝试了:
#!/usr/bin/perl
use strict;
use warnings;
my $i;
my @grepped
open(INFILE,"input.dat") or die "$! Exiting.\n";
while (my $line = <INFILE>) {
if ($line =~ /^ZZZ (\d+)/){
push(@grepped,"$1\t")
};
$i=0;
for ($line =~ /^ABC (\d+)/){
$i+=1;
if($i==2){ push(@grepped,"$1\n") };
};
}
close(INFILE);
循环无法正常工作,我不知道为什么。我正进入(状态:
111 523
835
222 0007
4
333 777
00
而不是想要的:
111 835
222 4
333 00