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

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: