我是 Perl 的新手。感谢任何人都可以在这里给我一些建议和帮助。
我有一个文件:
A1a01 A1a03
A1a03 A1a0b
A1a0b A1a2a
A1a2a A1a02
A1app A1a06
Ala06 A1a07
A1b0v A1b0c
Alb0c Alb55
A1b55 A1b04
.. ..
.. ..
.
.
.
我想将顺序数据提取并打印到不同的组中。从给出的示例中可以看出,这些组是从 A1a01 到 A1a02、A1app 到 A1a07 和 A1b0v 到 A1b04。每组按顺序排列。
到目前为止,我已经尝试了下面的代码,但它无法获得我需要的东西。在比较 column1 和 column2 之后,我才设法打印那些匹配的名称。我不知道如何提取不匹配的名称。(比较column1 2nd name 和column2 1st name of 2 rows data 之后的顺序不是顺序的。)我需要打印每个组的名字和姓氏。
use strict;
use warnings;
my $i;
my $j;
my @column1;
my @column2;
my @array1;
my $lastname;
@column1=`awk '{print \$1}' saved4`;
@column2=`awk '{print \$2}' saved4`;
for ($i=0;$i<=$#column1;$i++){
for ($j=0;$j<=$#column2;$j++){
if ($column1[$i]=~ /$column2[$j]/){
push (@array1,$column2[$j]);
}
else {
$lastname = $column2[$j];
}
}
}
print "$column1[0] @array1 $lastname\n";
预期的结果是这样的:
group1:
A1a01 A1a03
A1a03 A1a0b
A1a0b A1a2a
A1a2a A1a02
group2:
A1app A1a06
Ala06 A1a07
group3:
A1b0v A1b0c
Alb0c Alb55
A1b55 A1b04