我是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第2個名稱和第2個第2個數據的第1個名稱後的順序)。我需要打印每個組的名和姓。
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
你有意在樣品輸入/輸出混合'1'(頭號)和'l'(小寫L)或是一個錯字? – TLP