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 GNU Discussion :

Filtrage de doublons entre deux fichiers


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    etudiant
    Inscrit en
    Mars 2021
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : etudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2021
    Messages : 44
    Par défaut Filtrage de doublons entre deux fichiers
    Bonjour!

    J'aimerais savoir s'il y a un moyen de rechercher les valeurs qui apparaissent en double entre deux fichiers, et de les supprimer uniquement dans un des deux fichiers :

    Par exemple, dans le fichier 1 j'ai ces valeurs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    18.170 2.6877E+12 
    18.320 2.6078E+12 
    18.470 2.5558E+12 
    18.770 2.5375E+12 
    18.920 2.5782E+12
    et dans le fichier 2 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    18.170 2.6877E+12 
    18.320 2.6078E+12 
    18.470 2.5558E+12 
    18.620 2.5283E+12 
    18.770 2.5375E+12 
    18.920 2.5782E+12
    On peut voir que plusieurs valeurs du fichier 1 sont aussi présentes dans le fichier 2. Je cherche à faire apparaître les valeurs qui apparaissent uniquement dans le fichier 2.


    j'ai utilisé ce code pour l'instant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
     
    fic1= LidarAMA/lidarAMA_$Fic.txt
     
    fic2=LidarnotAMA/lidarnotAMA_$Fic.txt
     
    diff - y $fic1 $fic2
    où $Fic correspond à une variable que je défini au début de mon code (le script est assez long et il fait plusieurs opérations sur les fichiers. Ici je n'ai montré que l'étape où je cherche à comparer les deux listes.)

    La commande diff -y m'affiche bien les lignes différentes ( avec le caractère > ), mais elle m'affiche également les lignes identiques :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    							      >	12.170 1.7528E+12 
    12.320 1.3971E+12 						12.320 1.3971E+12 
    							      >	12.470 1.0143E+12 
    							      >	12.620 8.0024E+11 
    							      >	12.770 7.7966E+11 
    12.920 7.8995E+11 						12.920 7.8995E+11 
    13.070 6.9965E+11 						13.070 6.9965E+11

    Ce que j'aimerais c'est de récupérer uniquement les lignes différentes qui apparaissent dans le fichier 2.


    Merci!

  2. #2
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 287
    Par défaut
    Bonjour

    C'est un filtre. Donc grep avec fichier. À l'endroit ou à l'envers.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ grep -v -f fichier1.txt fichier2.txt
    18.620 2.5283E+12
    Lis le man.

  3. #3
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 651
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 651
    Par défaut
    avec diff, il faut utiliser --XXX-line-format; où XXX peut être new, unchanged, et old.

    EDIT : il faut que les fichiers soient triés.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  4. #4
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 287
    Par défaut
    Ou comm pour une différence organisée en 3 colonnes sur des fichiers triés.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $ comm <(sort fichier1.txt) <(sort fichier2.txt)
                    18.170 2.6877E+12
                    18.320 2.6078E+12
                    18.470 2.5558E+12
            18.620 2.5283E+12
                    18.770 2.5375E+12
                    18.920 2.5782E+12
    1ère colonne : les lignes que dans le fichier 1.
    2ème colonne : les lignes que dans le fichier 2.
    3ème colonne : les lignes communes.

    Voir le man pour ne garder qu'une sélection de ces colonnes.

  5. #5
    Membre averti
    Homme Profil pro
    etudiant
    Inscrit en
    Mars 2021
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : etudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2021
    Messages : 44
    Par défaut
    Il me semble que 'grep' devrait bien marcher, mais il y a des soucis pour aller chercher les valeurs dans le fichier 1 : il ne m'affiche aucune valeur différente en résultat, alors qu'en remplaçant fichier 1 par une des valeurs, je trouve bien ce qui est attendu.

    J'ai utilisé 'diff --unchanged-line-format' et ça a bien marché, donc je vais rester avec cette méthode!

    Merci pour vos réponses !

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

Discussions similaires

  1. Filtrage de doublons entre deux fichiers
    Par GlmGil dans le forum Général Python
    Réponses: 5
    Dernier message: 30/03/2021, 19h20
  2. Réponses: 9
    Dernier message: 12/07/2011, 17h25
  3. Outils sur les différences entre deux fichiers XML
    Par Community Management dans le forum XML/XSL et SOAP
    Réponses: 19
    Dernier message: 21/07/2008, 15h21
  4. [EXCEL] difference entre deux fichiers
    Par Mokhtar BEN MESSAOUD dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 19/01/2006, 11h12
  5. [langage] Passage d objet entre deux fichiers
    Par Slippers dans le forum Langage
    Réponses: 2
    Dernier message: 28/04/2005, 14h45

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