Bonjour,
J'ai un fichier CSV avec des identifiants, des mots de passes et quelques
autres données.
J'aimerai extraire les lignes ajoutées au fichier ANCIEN.csv par rapport au
fichier NOUVEAU.csv. Certains lignes ont été modifiées et celles-ci ne
m'intéressent pas. À noter que j'ai une adresse mail dans chaque ligne qui
pourrait servir d'identifiant unique...
Comment feriez-vous ?
Bonjour,
J'ai un fichier CSV avec des identifiants, des mots de passes et quelques
autres données.
J'aimerai extraire les lignes ajoutées au fichier ANCIEN.csv par rapport au
fichier NOUVEAU.csv. Certains lignes ont été modifiées et celles-ci ne
m'intéressent pas. À noter que j'ai une adresse mail dans chaque ligne qui
pourrait servir d'identifiant unique...
Comment feriez-vous ?
Bonjour,
J'ai un fichier CSV avec des identifiants, des mots de passes et quelques
autres données.
J'aimerai extraire les lignes ajoutées au fichier ANCIEN.csv par rapport au
fichier NOUVEAU.csv. Certains lignes ont été modifiées et celles-ci ne
m'intéressent pas. À noter que j'ai une adresse mail dans chaque ligne qui
pourrait servir d'identifiant unique...
Comment feriez-vous ?
J'ai un fichier CSV avec des identifiants, des mots de passes et quelques
autres données.
J'aimerai extraire les lignes ajoutées au fichier ANCIEN.csv par rapport au
fichier NOUVEAU.csv. Certains lignes ont été modifiées et celles-ci ne
m'intéressent pas. À noter que j'ai une adresse mail dans chaque ligne qui
pourrait servir d'identifiant unique...
J'ai un fichier CSV avec des identifiants, des mots de passes et quelques
autres données.
J'aimerai extraire les lignes ajoutées au fichier ANCIEN.csv par rapport au
fichier NOUVEAU.csv. Certains lignes ont été modifiées et celles-ci ne
m'intéressent pas. À noter que j'ai une adresse mail dans chaque ligne qui
pourrait servir d'identifiant unique...
J'ai un fichier CSV avec des identifiants, des mots de passes et quelques
autres données.
J'aimerai extraire les lignes ajoutées au fichier ANCIEN.csv par rapport au
fichier NOUVEAU.csv. Certains lignes ont été modifiées et celles-ci ne
m'intéressent pas. À noter que j'ai une adresse mail dans chaque ligne qui
pourrait servir d'identifiant unique...
On Wed, Sep 20, 2017 at 04:48:43PM +0200, Migrec wrote:J'ai un fichier CSV avec des identifiants, des mots de passes et quelques
autres données.
C'est mal, il faut hacher les mots de passe.
On Wed, Sep 20, 2017 at 04:48:43PM +0200, Migrec wrote:
J'ai un fichier CSV avec des identifiants, des mots de passes et quelques
autres données.
C'est mal, il faut hacher les mots de passe.
On Wed, Sep 20, 2017 at 04:48:43PM +0200, Migrec wrote:J'ai un fichier CSV avec des identifiants, des mots de passes et quelques
autres données.
C'est mal, il faut hacher les mots de passe.
On Wed, Sep 20, 2017 at 04:48:43PM +0200, Migrec wrote:J'ai un fichier CSV avec des identifiants, des mots de passes et quelques
autres données.
C'est mal, il faut hacher les mots de passe.
J'aimerai extraire les lignes ajoutées au fichier ANCIEN.csv par rapport au
fichier NOUVEAU.csv. Certains lignes ont été modifiées et celles-ci ne
m'intéressent pas. À noter que j'ai une adresse mail dans chaque ligne qui
pourrait servir d'identifiant unique...
En Perl, avec un tableau associatif indexé par adresse mail,
par ex. avec des fichiers:
toto:tata::0:2
# Lire et indexer le premier fichier
my %lines;
foreach (<$file1>) {
my ($f1, $f2, $email, $f3, $f4) = split /:/;
$lines{$email} = 1;
}
# Imprimer ce qui n'est pas dans le premier fichier
foreach (<$file2>) {
my ($f1, $f2, $email, $f3, $f4) = split /:/;
print unless exists $lines{$email};
}
On Wed, Sep 20, 2017 at 04:48:43PM +0200, Migrec wrote:
J'ai un fichier CSV avec des identifiants, des mots de passes et quelques
autres données.
C'est mal, il faut hacher les mots de passe.
J'aimerai extraire les lignes ajoutées au fichier ANCIEN.csv par rapport au
fichier NOUVEAU.csv. Certains lignes ont été modifiées et celles-ci ne
m'intéressent pas. À noter que j'ai une adresse mail dans chaque ligne qui
pourrait servir d'identifiant unique...
En Perl, avec un tableau associatif indexé par adresse mail,
par ex. avec des fichiers:
toto:tata:foo@bar.com:0:2
# Lire et indexer le premier fichier
my %lines;
foreach (<$file1>) {
my ($f1, $f2, $email, $f3, $f4) = split /:/;
$lines{$email} = 1;
}
# Imprimer ce qui n'est pas dans le premier fichier
foreach (<$file2>) {
my ($f1, $f2, $email, $f3, $f4) = split /:/;
print unless exists $lines{$email};
}
On Wed, Sep 20, 2017 at 04:48:43PM +0200, Migrec wrote:J'ai un fichier CSV avec des identifiants, des mots de passes et quelques
autres données.
C'est mal, il faut hacher les mots de passe.
J'aimerai extraire les lignes ajoutées au fichier ANCIEN.csv par rapport au
fichier NOUVEAU.csv. Certains lignes ont été modifiées et celles-ci ne
m'intéressent pas. À noter que j'ai une adresse mail dans chaque ligne qui
pourrait servir d'identifiant unique...
En Perl, avec un tableau associatif indexé par adresse mail,
par ex. avec des fichiers:
toto:tata::0:2
# Lire et indexer le premier fichier
my %lines;
foreach (<$file1>) {
my ($f1, $f2, $email, $f3, $f4) = split /:/;
$lines{$email} = 1;
}
# Imprimer ce qui n'est pas dans le premier fichier
foreach (<$file2>) {
my ($f1, $f2, $email, $f3, $f4) = split /:/;
print unless exists $lines{$email};
}
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};
}
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};
}
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};
}
e 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 égalemen t 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 ?
e 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 égalemen t 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 ?
e 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 égalemen t 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 ?
On Tuesday, 24 October 2017 14:52:55 CEST Migrec wrote:e 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 ?
Pas sur de comprendre. Perl devrait traiter les '$' venant du fichier d'entrée
comme un autre caractère Bref ton script devrait fonctionner.
Si ce n'est pas le cas, il va nous falloir plus de détails (script et un
exemple d'entrée).
On Tuesday, 24 October 2017 14:52:55 CEST Migrec wrote:
e 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 ?
Pas sur de comprendre. Perl devrait traiter les '$' venant du fichier d'entrée
comme un autre caractère Bref ton script devrait fonctionner.
Si ce n'est pas le cas, il va nous falloir plus de détails (script et un
exemple d'entrée).
On Tuesday, 24 October 2017 14:52:55 CEST Migrec wrote:e 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 ?
Pas sur de comprendre. Perl devrait traiter les '$' venant du fichier d'entrée
comme un autre caractère Bref ton script devrait fonctionner.
Si ce n'est pas le cas, il va nous falloir plus de détails (script et un
exemple d'entrée).
Oui effectivement il fonctionne ce script perl... mea culpa.
C'est simplement le fichier initial (pas de retour chariot à
l'intérieur des lignes) qui diffère du fichier actuel (retours
chariot dans les lignes).
Oui effectivement il fonctionne ce script perl... mea culpa.
C'est simplement le fichier initial (pas de retour chariot à
l'intérieur des lignes) qui diffère du fichier actuel (retours
chariot dans les lignes).
Oui effectivement il fonctionne ce script perl... mea culpa.
C'est simplement le fichier initial (pas de retour chariot à
l'intérieur des lignes) qui diffère du fichier actuel (retours
chariot dans les lignes).
Oui effectivement il fonctionne ce script perl... mea culpa.
C'est simplement le fichier initial (pas de retour chariot à
l'intérieur des lignes) qui diffère du fichier actuel (retours
chariot dans les lignes).
hello,
il y a pas mal d'amélioration possibles pour rendre ton script
un peu plus facile a maintenir mais voilà celle qui me parait la plus
intéressante
tu écris
my %lines;
foreach (<$old>) {
my ($f1, $f2, $f3, $email, $f4, $f5, $f6, $f7,$f8) = split /;/;
$lines{$email} = 1;
}
hors seul le champ $email t'intéresse alors ne garde que celui-ci
my %lines;
foreach (<$old>) {
my $email = (split /;/)[3];
$lines{$email} = 1;
}
et là on se rend compte que lines ne contient pas des lignes
mais une paire pour chaque ligne avec une adresse email en clef et
1 comme valeur unique ( $email => 1 ). du coup on peut écrire
my %found_email = map { (split /;/)[3] => 1 } <$old>;
de meme on filtrera ton 2eme fichier presque de la meme manière
map {print if $found_email{ (split /;/)[3] } <$new>;
Oui effectivement il fonctionne ce script perl... mea culpa.
C'est simplement le fichier initial (pas de retour chariot à
l'intérieur des lignes) qui diffère du fichier actuel (retours
chariot dans les lignes).
hello,
il y a pas mal d'amélioration possibles pour rendre ton script
un peu plus facile a maintenir mais voilà celle qui me parait la plus
intéressante
tu écris
my %lines;
foreach (<$old>) {
my ($f1, $f2, $f3, $email, $f4, $f5, $f6, $f7,$f8) = split /;/;
$lines{$email} = 1;
}
hors seul le champ $email t'intéresse alors ne garde que celui-ci
my %lines;
foreach (<$old>) {
my $email = (split /;/)[3];
$lines{$email} = 1;
}
et là on se rend compte que lines ne contient pas des lignes
mais une paire pour chaque ligne avec une adresse email en clef et
1 comme valeur unique ( $email => 1 ). du coup on peut écrire
my %found_email = map { (split /;/)[3] => 1 } <$old>;
de meme on filtrera ton 2eme fichier presque de la meme manière
map {print if $found_email{ (split /;/)[3] } <$new>;
Oui effectivement il fonctionne ce script perl... mea culpa.
C'est simplement le fichier initial (pas de retour chariot à
l'intérieur des lignes) qui diffère du fichier actuel (retours
chariot dans les lignes).
hello,
il y a pas mal d'amélioration possibles pour rendre ton script
un peu plus facile a maintenir mais voilà celle qui me parait la plus
intéressante
tu écris
my %lines;
foreach (<$old>) {
my ($f1, $f2, $f3, $email, $f4, $f5, $f6, $f7,$f8) = split /;/;
$lines{$email} = 1;
}
hors seul le champ $email t'intéresse alors ne garde que celui-ci
my %lines;
foreach (<$old>) {
my $email = (split /;/)[3];
$lines{$email} = 1;
}
et là on se rend compte que lines ne contient pas des lignes
mais une paire pour chaque ligne avec une adresse email en clef et
1 comme valeur unique ( $email => 1 ). du coup on peut écrire
my %found_email = map { (split /;/)[3] => 1 } <$old>;
de meme on filtrera ton 2eme fichier presque de la meme manière
map {print if $found_email{ (split /;/)[3] } <$new>;
Mais quoique je fasse, la sortie inclut toute de même les lignes fai sait
suite à un retour chariot... Solution temporaire : supprimer la colo nne
Adresse avec un tableur et passer le script.
Mais quoique je fasse, la sortie inclut toute de même les lignes fai sait
suite à un retour chariot... Solution temporaire : supprimer la colo nne
Adresse avec un tableur et passer le script.
Mais quoique je fasse, la sortie inclut toute de même les lignes fai sait
suite à un retour chariot... Solution temporaire : supprimer la colo nne
Adresse avec un tableur et passer le script.