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 :

Diff sur un fichier


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 135
    Par défaut Diff sur un fichier
    Bonjour tout le monde,

    Je cherche à comparer le contenu de deux fichiers, pour cela j'utilise cette commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    diff --old-line-format= --unchanged-line-format= --new-line-format=%L test1 test2 | grep ^[0-9] | sed 's/^/+ /'
    Cela me permet de ressortir la différence entre les deux fichiers, sauf que je souhaite comparer le fichier sur son contenu, et non ligne par ligne.

    Je m'explique...

    Voici le contenu des fichiers :

    ### test1 ###
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
          1 1.1.1.1   nom1
          2 2.2.2.2   nom2
          3 3.3.3.3   nom3
          4 4.4.4   nom4
    ### test2 ###
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
          1 1.1.1.1   nom1
          2 3.3.3.3   nom3
          3 2.2.2.2   nom2
          4 4.4.4   nom4
    Dans le résultat de mon diff, il va me sortir la ligne 2 et 3, sauf que j'aimerais que le diff me renvoie que les fichiers sont identiques, car le contenu global est identique.

    Donc je ne sais pas comment faire pour comparer la globalité du fichier mais non ligne par ligne.

    Je sais pas si c'est très clair

    Merci par avance

  2. #2
    Membre chevronné
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2013
    Messages : 563
    Par défaut
    Salut,

    tri tes 2 fichiers de la même façon avant de les comparer non ?

    genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    sort fichier1.txt > fichier1-temp.txt
    sort fichier2.txt > fichier2-temp.txt
    diff fichier1-temp.txt fichier2-temp.txt
    ou sans fichiers temp ni diff :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    a=$(sort fichier1.txt)
    a=$(echo $a)
    b=$(sort fichier2.txt)
    b=$(echo $b)
    if [[ $a != $b ]]
    then
    echo "Les fichiers sont différents"
    else
    echo "Les fichiers sont identiques"
    fi
    Les echo servent à dégager les espaces et lignes vident qui pourraient être différents.

    EDIT :
    En fait tes lignes ne sont pas les mêmes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
          3 3.3.3.3   nom3
          2 3.3.3.3   nom3
    Sauf si les premiers chiffres sont les numéros de ligne...

  3. #3
    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

    +1 pour le tri.

    Si tu es en bash, tu peux utiliser la substitution de processus.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    diff <(sort fichier1.txt) <(sort fichier2.txt)

  4. #4
    Membre chevronné
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2013
    Messages : 563
    Par défaut
    étrange.... je pensais l'avoir testé cette commande pour ne pas passer par des fichiers mais j'avais eu une erreur...
    j'ai dû me tromper quelque part

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 135
    Par défaut
    Ah bah oui la commande sort... Cela parait tellement évident maintenant

    Merci !

  6. #6
    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
    Par contre, il est toujours aussi maladroit d'utiliser grep puis sed.
    Un seul sed suffit.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -n '/^[0-9]/s/^/+ /p' fichier
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed '/^[0-9]/!d;s/^/+ /' fichier

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

Discussions similaires

  1. Diff sur fichier PHP
    Par Fabiendst dans le forum Shell et commandes GNU
    Réponses: 20
    Dernier message: 07/07/2014, 18h12
  2. diff sur deux fichiers encodés latin1 et UTF-8
    Par noooop dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 02/02/2010, 14h14
  3. Pointer sur un fichier FILE *
    Par Biou Pink Powa dans le forum C
    Réponses: 3
    Dernier message: 29/01/2004, 14h45
  4. Extraction de données sur des fichiers excel
    Par iupgeii dans le forum MFC
    Réponses: 3
    Dernier message: 23/01/2004, 13h53
  5. reHELP sur un fichier SQL
    Par asken dans le forum Langage SQL
    Réponses: 2
    Dernier message: 08/06/2003, 23h35

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