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 <vinc...@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)