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 :

afficher les lignes d'un fichier qui ne sont pas dans lun autre fichier


Sujet :

Shell et commandes GNU

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Côte d'Ivoire

    Informations forums :
    Inscription : Mars 2011
    Messages : 8
    Points : 21
    Points
    21
    Par défaut afficher les lignes d'un fichier qui ne sont pas dans lun autre fichier
    Salut tout le monde

    J'ai deux fichiers que je nomme A et B. A contient plus de 750 000 lignes et B plus 450 000 lignes. Je souhaite mettre dans un fichier C, uniquement toutes les lignes du fichier A qui ne sont pas dans le fichier B. J'ai au préalable utiliser les commandes "sort" et "uniq" pour trier et m'assurer de l'unicité des lignes
    J'ai pensé à la commande join, mais je ne sais pas trop comment m'y prendre. Quelqu'un pourrais m'aider?

  2. #2
    Expert éminent

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Points : 6 276
    Points
    6 276
    Par défaut
    Salut,

    devrait le faire non ?

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 588
    Points : 19 474
    Points
    19 474
    Par défaut
    Bonjour,

    plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    grep --invert-match --file=B A > C
    les sort et uniq préalables ne sont peut-être pas nécessaires
    ...
    ?

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Côte d'Ivoire

    Informations forums :
    Inscription : Mars 2011
    Messages : 8
    Points : 21
    Points
    21
    Par défaut
    Salut zipe31

    Je n'obtient pas ce que je veux avec cette commande. Par exemple

    A
    60000124
    60000141
    60121224
    60235894
    60235987

    B
    60000124
    60000141
    60333333
    60654789
    Quand je tape ta commande j'obtient ce fichier

    C
    60121224
    60235894
    60235987
    60333333
    60654789

    Or je veux uniquement les lignes de A qui ne sont pas dans B (celles de B qui ne sont pas dans A ne m'interessent pas)

  5. #5
    Expert éminent

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Points : 6 276
    Points
    6 276
    Par défaut
    Oups je n'avais pas tenu compte du fait que B pouvait avoir aussi des lignes uniques

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $ sort  A B | uniq -u > C
    $ sort  A C | uniq -d
    60121224
    60235894
    60235987
    $
    C'est mieux ?

  6. #6
    Expert éminent

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Points : 6 276
    Points
    6 276
    Par défaut
    Citation Envoyé par N_BaH Voir le message
    Bonjour,

    plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    grep --invert-match --file=B A > C
    les sort et uniq préalables ne sont peut-être pas nécessaires
    ...
    ?
    Salut,

    Pas mieux

    Effectivement, pourquoi faire compliqué quand on peut faire simple

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Côte d'Ivoire

    Informations forums :
    Inscription : Mars 2011
    Messages : 8
    Points : 21
    Points
    21
    Par défaut
    Salut N_Bah

    Le fichier C que j'obtiens est vide . J'utilise pour tester, ces deux petit fichier A et B pour vérifier le résultat avant de l'appliquer sur mes gros fichiers.

    A
    60000124
    60000141
    60121224
    60235894
    60235987

    B
    60000124
    60000141
    60333333
    60654789

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Côte d'Ivoire

    Informations forums :
    Inscription : Mars 2011
    Messages : 8
    Points : 21
    Points
    21
    Par défaut
    Merci zipe31 ça marche bien! je vais essayer sur mes vrais fichiers.

  9. #9
    Expert éminent

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Points : 6 276
    Points
    6 276
    Par défaut
    Pourtant...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    $ ls
    A  B
    
    $ cat A
    60000124
    60000141
    60121224
    60235894
    60235987
    
    $ cat B
    60000124
    60000141
    60333333
    60654789
    
    $ grep --invert-match --file=B A > C
    
    $ ls
    A  B  C
    
    $ cat C
    60121224
    60235894
    60235987
    
    $

  10. #10
    Expert éminent

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Points : 6 276
    Points
    6 276
    Par défaut
    Citation Envoyé par israellita Voir le message
    Merci zipe31 ça marche bien! je vais essayer sur mes vrais fichiers.
    Pourtant la solution de N_BaH est bien plus simple et adaptée

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Côte d'Ivoire

    Informations forums :
    Inscription : Mars 2011
    Messages : 8
    Points : 21
    Points
    21
    Par défaut
    J'utilise la distribution Suse, est ce une raisonpour que la commande de N_Bah ne marche pas?

  12. #12
    Membre chevronné

    Homme Profil pro
    Responsable projets techniques
    Inscrit en
    Février 2003
    Messages
    980
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable projets techniques
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Février 2003
    Messages : 980
    Points : 1 894
    Points
    1 894
    Par défaut
    Probablement pas ! Tu as quelle version de grep ?

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Côte d'Ivoire

    Informations forums :
    Inscription : Mars 2011
    Messages : 8
    Points : 21
    Points
    21
    Par défaut
    Citation Envoyé par Alek-C Voir le message
    Probablement pas ! Tu as quelle version de grep ?
    GNU grep 2.5.2

  14. #14
    Membre chevronné

    Homme Profil pro
    Responsable projets techniques
    Inscrit en
    Février 2003
    Messages
    980
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable projets techniques
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Février 2003
    Messages : 980
    Points : 1 894
    Points
    1 894
    Par défaut
    Ouais, c'est super récent

    A tout hasard, essaye ça :
    Mais je pense plutôt que c'est tes fichiers de tests qui ont un problème !

  15. #15
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Côte d'Ivoire

    Informations forums :
    Inscription : Mars 2011
    Messages : 8
    Points : 21
    Points
    21
    Par défaut
    Citation Envoyé par Alek-C Voir le message
    Ouais, c'est super récent

    A tout hasard, essaye ça :
    Mais je pense plutôt que c'est tes fichiers de tests qui ont un problème !
    Ok, j'ai testé sur les vrais fichiers et j'ai l'erreur suivant
    grep: Memory exhausted
    Je suppose que la mémoire de grep n'est pas suffisante pour traiter mes fichiers!

  16. #16
    Membre chevronné

    Homme Profil pro
    Responsable projets techniques
    Inscrit en
    Février 2003
    Messages
    980
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable projets techniques
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Février 2003
    Messages : 980
    Points : 1 894
    Points
    1 894
    Par défaut
    sans doute

  17. #17
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Côte d'Ivoire

    Informations forums :
    Inscription : Mars 2011
    Messages : 8
    Points : 21
    Points
    21
    Par défaut
    Je crois que je vais utiliser la commande de zipe31. Merci à tous pour votre aide!

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 30/09/2014, 16h29
  2. Réponses: 4
    Dernier message: 07/05/2011, 11h50
  3. supprimer les fichiers qui ne sont pas dans une liste
    Par jeorcal dans le forum Langage
    Réponses: 7
    Dernier message: 15/01/2011, 10h03
  4. Réponses: 5
    Dernier message: 27/04/2010, 14h55
  5. Réponses: 10
    Dernier message: 18/06/2009, 13h27

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