私は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 を比較した後、一致した名前のみを印刷することができました。一致しない名前を抽出する方法がわかりません。(列 1 の 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