[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Diff : obtenir uniquement les lignes ajoutées



Le 20/09/2017 à 20:43, Migrec a écrit :
Je ne connais pas du tout le perl (et du coup pas tout compris...) mais j'ai réussi à bricoler un peu pour avoir un résultat qui me parait satisfaisant.
Merci beaucoup.

 Le script :
#!/usr/bin/perl -w

my $file1 =  $ARGV[0];
my $file2 =  $ARGV[1];

open(my $old, '<', $file1) or die "Can't open $file1: $!";
open(my $new, '<', $file2) or die "Can't open $file2: $!";


 # Lire et indexer le premier fichier
my %lines;
foreach (<$old>) {
   my ($f1, $f2, $f3, $email, $f4, $f5, $f6, $f7,$f8) = split /;/;
   $lines{$email} = 1;
}

# Imprimer ce qui n'est pas dans le premier fichier
foreach (<$new>) {
   my ($f1, $f2, $f3, $email, $f4, $f5, $f6, $f7,$f8) = split /;/;

print unless exists $lines{$email};
}

Bonjour,

Je déterre ce fil de discussion car l'interface qui produit mon fichier en entrée a changé. Grr. Je me retrouve avec un fichier issu de DOS (donc des fins de lignes avec ^M$). Jusque là tout va bien mais désormais, j'ai également un caractère $ dans l'un des champs (c'est un champ de type adresse qui peut contenir 4 lignes donc 3 $ potentiellement).

Option 1
Je traite uniquement les lignes qui commencent par ". Je contourne le problème. Comment puis-je faire cela ?

Option 2
J'indique à Perl qu'il s'agit de la même ligne lorsqu'il y a un $. Mais comment ?

--
Migrec


Reply to: