Re: Diff : obtenir uniquement les lignes ajoutées
On 2017-09-20 16:48:43 +0200, Migrec wrote:
> 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 ?
Donc ce que tu veux, ce sont toutes les lignes qui ont un nouvel
identifiant. Je vois deux solutions:
1. Écrire un script dans un langage qui supporte les tableaux
associatifs (e.g. les hash en Perl), et utiliser l'identifiant
comme clé. D'abord, définir les clés existantes en lisant
ANCIEN.csv; dans un second temps, lire NOUVEAU.csv et tester
pour chaque ligne si la clé est déjà utilisée.
2. Avec un script shell utilisant grep -f. Dans un premier temps, en
lisant ANCIEN.csv, stocker la liste des identifiants à rejeter dans
un fichier FILE. Dans un second temps, un truc du style:
grep -v -f FILE NOUVEAU.csv
(pas testé). Dans la liste de rejet, il faut faire attention sur
les regexp, au cas une adresse mail peut avoir des caractères
spéciaux, si une adresse mail peut être une sous-chaîne d'une
autre, ou si elle peut apparaître ailleurs dans la ligne (i.e.
pas comme identifiant). Bref, la solution (1) me semble plus
simple.
--
Vincent Lefèvre <vincent@vinc17.net> - Web: <https://www.vinc17.net/>
100% accessible validated (X)HTML - Blog: <https://www.vinc17.net/blog/>
Work: CR INRIA - computer arithmetic / AriC project (LIP, ENS-Lyon)
Reply to: