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érence entre deux fichiers


Sujet :

Shell et commandes GNU

  1. #1
    Membre confirmé
    Inscrit en
    Octobre 2007
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 84
    Par défaut Différence entre deux fichiers
    Bonjour,

    j'ai un fichier journalier de log qui se remplie au fur et à mesure de la journée.

    Je souhaite extraire les nouvelles lignes générées lors d'un intervalle de temps.

    Pour cela je garde un fichier .old et je fais la différence entre l'instant T et T-1

    diff file.old file

    Le problème est que je n'arrive pas a parametrer correctement diff pour qu'il ne m'affiche uniquement les nouvelles lignes et pas le numéro de ligne ou se situe la différence :
    Je souhaiterai obtenir seulement :
    Une idée ?

    Merci.

  2. #2
    Membre Expert Avatar de jabbounet
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juin 2009
    Messages
    1 909
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 909
    Par défaut
    C'est normal,

    diff t'indique non seulement les différences mais aussi ou elles se trouvent dans les deux fichiers. 3a4 t'indique que la différence se situe a partir de la ligne 3 dans le fichier .old et de la ligne 4 dans le nouveau. Les caractères < et > en début de ligne t'indiquent dans lequel des fichier se trouve le texte affiché.

    Pour répondre à ton problème tu devrais combiner ta commande avec grep et sed avec quelque chose comme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     diff  f1 f2 | egrep '^> ' | sed 's/^> //'
    ou f1 et f2 représentent les fichiers à comparer.

  3. #3
    Membre confirmé
    Inscrit en
    Octobre 2007
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 84
    Par défaut
    Merci,

    j'avais bien compris la signification de la première ligne ^^

    Ce qui me paraissait pas normal c'est que la commande diff ne propose pas une option permettant de ne pas afficher cette ligne. Je pensais que l'option m'avais échappée. Diff propose bien une option --line-format ou --xxx-group-format. Mais je n'ai pas réussi à m'en servir comme je le voulais.

    Je voulais justement éviter de faire appelle aux expressions régulières, mais si je n'ai pas le choix...

    Merci de ton aide !

  4. #4
    Membre Expert Avatar de jabbounet
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juin 2009
    Messages
    1 909
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 909
    Par défaut
    Citation Envoyé par redkan Voir le message
    Merci,

    j'avais bien compris la signification de la première ligne ^^

    Ce qui me paraissait pas normal c'est que la commande diff ne propose pas une option permettant de ne pas afficher cette ligne. Je pensais que l'option m'avais échappée. Diff propose bien une option --line-format ou --xxx-group-format. Mais je n'ai pas réussi à m'en servir comme je le voulais.

    Je voulais justement éviter de faire appelle aux expressions régulières, mais si je n'ai pas le choix...

    Merci de ton aide !
    effectivement tu peux avec la ligne de commande suivante, attention j'utilise des ' et pas des "
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    diff --old-line-format='' --new-line-format='%l
    ' --unchanged-line-format='' t.txt t2.txt
    avec
    Citation Envoyé par t.txt
    foo bar wasa
    foo bar bar
    bar bar bar
    bae ee
    bae zaze
    bae zabarze
    Citation Envoyé par t2.txt
    foo bar wasa
    foo bar bar
    bar bar bar
    bae ee
    bae zaze
    bae zabarze
    SSS
    SSS
    j'obtiens
    Citation Envoyé par result
    SSS
    SSS
    le plus difficile est d'insérer le saut de ligne pour le new ligne format car \n ne marche pas, mais si tu est dans un script pas de soucis.


    je te remercie de ta question, je viens d'apprendre quelque chose

  5. #5
    Membre confirmé
    Inscrit en
    Octobre 2007
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 84
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    diff --old-line-format='' --new-line-format='%l
    ' --unchanged-line-format='' t.txt t2.txt
    Je n'avais pas pensé à utilisé les trois line-format en même temps, ce qui parait logique après coup..

    je te remercie de ta question, je viens d'apprendre quelque chose
    C'est moi qui te remercie

    Bonne journée.

  6. #6
    Invité de passage
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2013
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 1
    Par défaut
    La bonne syntaxe pour avoir uniquement les lignes nouvelles et bien séparées sur des lignes différentes est la suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    diff --old-line-format= --unchanged-line-format= --new-line-format=%L  txt1 txt2
    il ne faut pas mettre de quote derrière les formats dont on ne veut pas, et vous noterez le %L majuscule, That's all folks !

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 12/07/2011, 17h25
  2. 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
  3. Réponses: 4
    Dernier message: 16/04/2008, 11h12
  4. relever différences entre deux fichiers php
    Par midiweb dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 04/03/2008, 09h34
  5. Différence entre deux fichiers
    Par Celelibi dans le forum Langage
    Réponses: 4
    Dernier message: 26/04/2006, 17h36

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