Bonjour,

J'ai un fichier d'entrée
aaa 127 132
aaa 48 52
ccc 15 0
bbb 25 40
aaa 127 18
bbb 25 40

et je souhaiterai obtenir un fichier final

aaa 127 132
aaa 25 40
ccc 15 0


Je ne souhaite pas de redondance et c'est la colonne 3 qui diffèrent entre 2 éléments identiques!!


Voiçi mon code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 
###tri selon la colonne 3
my @data = <F>;
my @sorted_data = map {$_->[2]}
                  sort {$a->[0] cmp $b->[0] || $a->[1] <=> $b->[1]}
                  map {my ($f1, $f2) = (split /\t/, $_)[0, 2]; [$f1, $f2, $_]}  @data;
#print @sorted_data;
 
foreach (@sorted_data) {
        chomp $_;
        my ($a,$b,$c) = (split /\t/,$_); # a garder
 
	my @fields = "$a"."\t"."$b";
	#print "$ligne\n";
	my $key = join "\t", @fields;
    	push @tableau, [ @fields ] if !$line_count{$key}++; 
}
print Dumper @tableau;
 
for my $data (@tableau) {
   	print "@$data\n";
}
Merci pour votre aide