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

Re: Diff : obtenir uniquement les lignes ajoutées





Le 25/10/2017 à 10:54, Marc Chantreux a écrit :
salut,

#!/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: $!";

my %found_email = map { (split /;/)[3] => 1 } <$old>;
map {print if not $found_email{ (split /;/)[3] }} <$new>;
pe en rajoutant chomp ?

my ($new,$old) =
	map { open my $fh, '<', $_ or die "Can't open $_: $!"; $fh }
	@ARGV;

my %found_email = map {chomp; (split /;/)[3] => 1 } <$old>;
map {chomp; print if not $found_email{ (split /;/)[3] }} <$new>;

par contre: ton fichier est un CSV comme son nom l'indique: il y a
plein de cas que tu ne prend pas en compte en splitant naivement sur ';'
(par exemple un champ qui contiendrait un ";").

pour rendre ton script robuste, ne réinvente pas la roue et utilise
Text::CSV ou mieux  Text::CSV::Simple.

si j'en ai le temps, je t'écrirais un exemple plus tard.
Ça passe pas... :-(

$ ./listerLesNouveaux3.pl Ancien.csv Nouveau.csv
Adresseligne2";"";"";"";"";"";""RENOM";"NOUVEAUNOM.NOUVEAUPRENOM@domaine.fr";"AdresseLigne1";"";"";"";"";"";""


Reply to: