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 :

Comparer 2 fichiers


Sujet :

Shell et commandes GNU

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2003
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 4
    Points : 4
    Points
    4
    Par défaut Comparer 2 fichiers
    Bonjour à tous,

    Je cherche une commande en shell pour pouvoir comparer 2 fichier et effacer les doublons pour avoir en resultat que les differences.

    ex:

    fichier1:
    toto
    titi
    tata
    tete
    fichier2:
    toto
    titi
    et comme resultat en comparant les 2 fichier, il me faut:
    tata
    tete


    voila, si quelqu'un pourrais m'aider, je lui serais reconnaissant

    PS: dsl pour cet exemple un peu nul...

  2. #2
    Membre expérimenté
    Avatar de narmataru
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 548
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 548
    Points : 1 680
    Points
    1 680
    Par défaut
    permière piste :
    'man diff'

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2003
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    merci je connaissais pas cette commande

  4. #4
    Modérateur
    Avatar de ggnore
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 472
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 472
    Points : 4 029
    Points
    4 029
    Par défaut
    il y a aussi cmp mais j'utilise diff comme le propose le posteur avant moi.

  5. #5
    Membre expérimenté
    Avatar de narmataru
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 548
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 548
    Points : 1 680
    Points
    1 680
    Par défaut
    je pense que 'cmp' est plus approprié pour comparer des ficheirs binaire car il compare les fichier byte à byte comme il est dit dans le man :
    cmp - compare two files byte by byte

  6. #6
    Expert éminent

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Points : 6 686
    Points
    6 686
    Par défaut
    La commande cmp indique si les fichiers sont identiques.

    Syntaxe:
    La commande diff recherche les différences entre deux fichiers.

    Syntaxe
    Voilà @++

  7. #7
    Membre expérimenté

    Inscrit en
    Mai 2002
    Messages
    720
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 720
    Points : 1 594
    Points
    1 594
    Par défaut
    Tu peux te dépatouiller avec awk pour avoir le format de sortie que tu as écrit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    { cat a | sort | uniq ; echo -- ; cat b | sort | uniq } | awk 'BEGIN { x = 1 } $1 == "--" {x *= 2} $1 != "--" { tab[$0] += x } END { for (i in tab){ if (tab[i] != 3) print i } }'
    J'a séparé a et b par une ligne de délimitation '--' ... Je vire les doublons avec uniq dans les listes... Mais avant il faut les trier, d'où "cat a | sort | uniq"

    Pour le script awk, y'a diverses manière de faire, je trouve ca assez propre... Si on considère les valeurs que j'ajoute (1 et 2) en binaire (01 et 10) selon que ca soit le premier ou second fichier, pour chaque ligne on aura 01 si unqiuement dans le fichier 1, 10 si uniquement dans le fichier 2... 11 si dans les deux ... (Et pas de ligne si dans aucun ) .... Donc si différent de 3, alors c'est que c'est une ligne qui n'apparait pas dans tous les fichiers .... Ca présente l'avantage d'etre rapidement adaptable à 3 fichiers ou plus (interet du '*=') et on peut aisément retrouver le ou les fichier(s) dans le(s)quel(s) la chaine se trouve grace a ce numéro

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

Discussions similaires

  1. Comment comparer des fichiers sur Windows?
    Par programmerPhil dans le forum Autres Logiciels
    Réponses: 9
    Dernier message: 22/02/2006, 20h47
  2. [File]Comparer 2 fichiers
    Par onlytoine dans le forum Entrée/Sortie
    Réponses: 8
    Dernier message: 05/12/2005, 17h24
  3. Fonction c qui compare deux fichiers ???
    Par babyface dans le forum C
    Réponses: 4
    Dernier message: 19/11/2005, 13h07
  4. [LG][FAQ]comparer des fichiers
    Par lucke dans le forum Langage
    Réponses: 11
    Dernier message: 01/06/2003, 18h02
  5. Comparer des fichiers de données : Quel Langage ?
    Par Anonymous dans le forum Langages de programmation
    Réponses: 6
    Dernier message: 24/04/2002, 22h37

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