1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| #!/usr/bin/perl
use strict; use warnings;
my $srcfile = 'chemin de ton fichier';
open my($src), '<', $srcfile
or die "Can't read $srcfile : $! \n";
my %GOP2;
# @lines = ( [ 'STRUCT', 'ENT', ... "\n" ], [ 'D', 'SG', 'HO_TX', ... ], [ 'D'...], ... )
my @lines = map { m/^\s*$/ ? () : [split /\t/] } <$src>;
# met dans %GOP2 les différentes valeurs de GOP2 (en tant que clé)
$GOP2{$_->[2]} = 1 for @lines;
my @out;
for my $line (@lines){
# si le GOP de cette ligne se termine par _TX, mettre ce qu'il y a avant dans $test
if( (my $test = $line->[3]) =~ s/_TX$// ) {
# sauf si $test est une des valeurs de GOP2, mettre la ligne dans @out
push @out, (join "\t", @$line) unless exists $GOP2{$test};
} else { # sinon
# mettre la ligne dans @out
push @out, (join "\t", @$line);
}
}
print @out;
__END__ |
Partager