IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes POSIX Discussion :

Suppression des doublons sur un fichier en fonction de plusieurs champs


Sujet :

Shell et commandes POSIX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 48
    Par défaut Suppression des doublons sur un fichier en fonction de plusieurs champs
    Bonjour,

    J'ai un fichier csv avec plusieurs champs séparés par des ";".
    Je souhaite supprimer les doublons sur ce fichier. On reconnait des doublons lorsque pour des lignes différentes les champs 1,2,3,4,5 et 9 sont identiques.

    Comment faire pour afficher les lignes sans doublons ou supprimer les doublons en prenant en comptes plusieurs champs distincts.

    Merci de votre aide !
    Moctarim

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 102
    Par défaut
    Cela ne répond pas à la question, mais si le fichier a été généré par une requête SQL, ce serait peut-être plus simple de la corriger...

    Sinon on peut aussi recharger le fichier dans une BD et refaire l'extraction

    A part ça, a-t-on le droit de changer l'ordre des lignes du fichier?

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 48
    Par défaut
    On ne peut pas jouer sur une requête SQL. Par contre on peut changer l'ordre des lignes du fichiers.

    Merci

  4. #4
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 102
    Par défaut
    Citation Envoyé par moctarim Voir le message
    On ne peut pas jouer sur une requête SQL. Par contre on peut changer l'ordre des lignes du fichiers.

    Merci
    Si on peut changer l'ordre des lignes du fichier, je commencerais par un 'sort' sur les champs 1,2,3,4,5 et 9, puis je piperais avec un petit programme awk qui, pour chaque ligne, constitue une chaîne en concaténant les champs 1,2,3,4,5 et 9, compare cette chaîne avec la dernière valeur enregistrée: si identique, alors ne rien faire sinon afficher la ligne complète et enregistrer la nouvelle valeur.
    Quelque chose comme (à vérifier):
    Edit (après vérification):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    sort -t';' -k1,5 -k9,9 | awk -F';' 'BEGIN {id=""; }
    { nid = $1 ";" $2 ";" $3 ";" $4 ";" $5 ";" $9 ;
      if ( id != nid ) { print $0; id = nid; }}'

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 48
    Par défaut
    Merci je teste le programme et je vous fais un retour.

  6. #6
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 102
    Par défaut
    Après une petite vérification, vaudrait mieux essayer ceci...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    sort -t';' -k1,5 -k9,9 | awk -F';' 'BEGIN {id=""; }
    { nid = $1 ";" $2 ";" $3 ";" $4 ";" $5 ";" $9 ;
      if ( id != nid ) { print $0; id = nid; }}'
    pendant qu'on y est, autant respecter la syntaxe de sort et awk!

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 48
    Par défaut
    Super merci beaucoup !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2003] Contrôle des doublons sur plusieurs feuilles, puis suppression
    Par DeathLighT dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 04/03/2013, 12h14
  2. Réponses: 4
    Dernier message: 20/04/2011, 14h07
  3. Réponses: 1
    Dernier message: 22/03/2009, 18h03
  4. Réponses: 15
    Dernier message: 24/04/2007, 19h36
  5. Réponses: 10
    Dernier message: 18/05/2006, 16h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo