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 :

Recherche d'anomalie dans un fichier log


Sujet :

Shell et commandes GNU

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2012
    Messages : 4
    Points : 5
    Points
    5
    Par défaut Recherche d'anomalie dans un fichier log
    Bonjour à tous,

    Je suis débutant en linux, et j'ai besoin de faire des recherches dans des fichiers logs qui sont parfois en erreur. J'explique par l'exemple :

    Voici mon type de log "normal"
    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
     
    <participant id="21308862">
    <cd_f>22</cd_f>
    <cd_a>10</cd_a>
    <adresses>
        <adresse id="18240999">
        <ligne_3>BAS DU FOR</ligne_3>
        <ligne_4>1 RESIDENCE FLEUR</ligne_4>
        <ligne_6>97190 LE GOSIER</ligne_6>
        <ligne_7>GUADELOUPE</ligne_7>
      </adresse>
    </adresses>
    <individu id="18000724">
      <cd_civilite>M</cd_civilite>
      <nom>NOMINDIV</nom>
      <prenom>prenomInvid</prenom>
    </individu>
    <entreprise/>
    </participant>
    Et voici un exemple de log en erreur que je dois détecter :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <participant id="21308863">
    <cd_f>33</cd_f>
    <cd_a>10</cd_a>
    <adresses>
        <adresse id="18241000">
        <ligne_3>75 RUE DU TEMPLE</ligne_3>
        <ligne_6>75003 PARIS</ligne_6>
      </adresse>
    </adresses>
    <entreprise/>
    </participant>
    La différence: il manque le contenu des balises <individu>

    Lorsque j'ouvre mes fichiers logs avec notePad++ (si je trouve "</adresses>\n<entreprise" c'est que j'ai une erreur).
    Mais j'ai besoin de l'automatiser dans un script shell, je fais des recherches depuis hier mais je n'aboutis pas.
    Je ne serai pas contre quelques pistes.....

    Le bonus étant encore de pouvoir retourner l'ID de la balise du participant en erreur.

    Merci à vous !

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 101
    Points : 5 849
    Points
    5 849
    Par défaut
    Citation Envoyé par narcagg8 Voir le message
    il manque le contenu des balises <individu>
    On peut le faire avec un parser de xml.

    Si je devais le faire, je le ferais en "awk" avec un petit automate d'état fini:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    si on trouve "<participant", alors on stocke l''id et on positionne "erreur" à true
    si on trouve "<individu", alors on positionne "erreur" à false
    si on trouve "</participant" et si "erreur" est à true, alors on imprime l''id stocké
    3 lignes de code! Facile, non?

    Yapuka...

  3. #3
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 287
    Points : 12 744
    Points
    12 744
    Par défaut
    Bonjour,

    Essaye la commande ci-dessous:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -ne '/<participant id/,/<\/participant/{/<participant id="\([^"]*\).*/{s//\1/;h;};/<\/adresses/{n;/<entreprise/!b;x;p;};}' fichier_de_log
    Cordialement.

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2012
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    Merci à vous deux !

    Jack-ft, ça me parait être une bonne piste... Je cherche dans ce sens.

    Disedorgue, je viens d'essayer la commande, mais elle ne me retourne rien...

    J'oubliais de préciser, j'ai des milliers d'occurence <participant id="xxx"> * </participant> au sein de mon fichier log. Est-ce une raison du non fonctionnement de ta commande ?

  5. #5
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 287
    Points : 12 744
    Points
    12 744
    Par défaut
    Non, chez moi, elle fonctionne avec les inputs que tu donnes...
    Mais là, on est sur du xml, donc les retour à la ligne sont plus que facultatif et peuvent très bien être inexistant dans ton fichier même si ton "notepad++" te le montre avec...
    Ils sont souvent reformatés pour une présentation du contenu plus "friendly".
    Cordialement.

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2012
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    Effectivement ça marche. Je me suis pris à mon propre piège en voulant simplifier mon exemple....
    Le problème était que j'ai plusieurs autres balises commençant par "<participant" au sein de ma balise <participant></participant> :

    <participant id="21308862">
    <cd_f>22</cd_f>
    <cd_a>10</cd_a>
    <participantEntites>
    <participantEntites entite=a>
    <participantEntites entite=b>
    </participantEntites>

    <adresses>
    <adresse id="18240999">
    <ligne_3>BAS DU FOR</ligne_3>
    <ligne_4>1 RESIDENCE FLEUR</ligne_4>
    <ligne_6>97190 LE GOSIER</ligne_6>
    <ligne_7>GUADELOUPE</ligne_7>
    </adresse>
    </adresses>
    <individu id="18000724">
    <cd_civilite>M</cd_civilite>
    <nom>NOMINDIV</nom>
    <prenom>prenomInvid</prenom>
    </individu>
    <entreprise/>
    </participant>
    J'ai testé en supprimant ces le bloc <participantEntite> et ta commande a fonctionné

    Si j'ai bien compris, ta commande regarde entre "<participant id" et "</participant" alors qu'il faudrait en fait rechercher entre "<participant id" et "</participant>"
    J'ai modifié en ce sens et ça fonctionne !

    UN GRAND MERCI

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 09/10/2009, 09h44
  2. Rechercher liens href dans un fichier
    Par ribrok dans le forum Langage
    Réponses: 5
    Dernier message: 27/09/2005, 17h15
  3. [langage] [PERL] prendre des infos dans un fichier log
    Par osiris73 dans le forum Langage
    Réponses: 2
    Dernier message: 24/05/2005, 16h42
  4. comment ne pas enregistrer dans le fichier log?
    Par trotters213 dans le forum MS SQL Server
    Réponses: 14
    Dernier message: 21/03/2005, 14h56
  5. recherche de doublons dans un fichier texte
    Par portu dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 07/10/2003, 14h13

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