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

Langage Perl Discussion :

Parsing de fichier de traces


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    130
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Doubs (Franche Comté)

    Informations forums :
    Inscription : Août 2008
    Messages : 130
    Par défaut Parsing de fichier de traces
    Salut à tous

    Après plusieurs essais pour extraire des trames dans un fichier de traces je reviens vous voir parce que je bloque (oui encore et toujours aussi mauvais dsl :s)

    Donc que je vous explique :p

    Mon premier script avait pour but d'extraire des constantes d'un fichier d'entête C, maintenant je dois analyser un fichier de trace en y extractant (?) les trames émises par un matériel (lecteur de carte sans contact).
    Mon problème est que le fichier est très long et qu'il y a peu de trames et que la tailles de celles ci est variable:

    on peut avoir une trame du genre

    FF 08 41 50 50 5F 53 50 49 00

    comme une
    04 3B 30 32 2F 30 33 2F 30 39 00 31 35 3A 33 37
    00 00 00 00 00 01 00

    ou voir même une du genre

    01 01 01 01 00 75 63 30 30 30 56 30 30 30 41 72
    66 30 30 33 56 30 30 32 42 00 43 4C 5F 44 42 52
    32 5F 30 30 34 56 31 30 30 45 00 00 00 00 00 01
    00 00 00 43 4B 53 00 00 00 00 00 00 00 30 30 31
    56 31 30 30 41 00 00 00 00 00 00 00 00 00 00 30
    30 30 31 38 34 35 39 00 00 00 00 00 00 00 41 50
    50 5F 53 50 49 00 00 00 30 30 31 56 31 30 30 45
    00 00 00 00 00 00 00 00 00 00 2D 2D 2F 2D 2D 2F
    2D 2D 00 00 00 00 00 00 00 55 4E 4B 4E 4F 57 4E
    43 00 00 30 30 31 56 31 30 31 41 00 00 00 00 00
    00 00 00 00 00 2D 2D 2F 2D 2D 2F 2D 2D 00 00 00
    00 00 00 00

    Tout ça pour dire que ca varie:

    Donc j'ai commencé mon script en essayant d'extraire des couples de nombres (ou lettres vu que c'est de l'hexa) de cette manière:

    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
     
    #englobe le fichier de traces à analyser
    my $FichierTrace = slurp "traces_brutes\\gcam02.dbg"; 
     
    #ouvre le fichier où seront affiché les trames
    open WRITER2, '>', "traces_formatées\\Analyse_traces.txt" or die "Le fichier ne peut être édité !\n"; 
     
    #explore tout le fichier
    my @Tableau_trames = $FichierTrace =~ m{
     
    \w{2}\s{1,}\w{2}\s{1,}\w{2}\s{1,}\w{2}\s{1,}\w{2}\s{1,}        \w{2}\s{1,}\w{2}\s{1,}\w{2}\s{1,}\w{2}\s{1,}\w{2}\s{1,}
    \w{2}\s{1,}\w{2}\s{1,}\w{2}\s{1,}\w{2}\s{1,}\w{2}\s{1,}
    \w{2}\s{1,} 
     
    }mgix;
     
    foreach my $truc(@Tableau_trames)
    {
       print WRITER2 $truc;
       print WRITER2 "\n";
    }
    donc j'obtiens bien mes trames dans mon fichier texte, sauf que certaines ne sont pas complètes.
    et je n'arrive pas à faire un affichage un peux plus propre en fait la j'ai un énorme bloc de chiffres et de lettres et c'est pas facile à analyser ce que fait mon appli.
    donc si quelqu'un à des conseils je suis preneur (encore et toujours )

    Merci

  2. #2
    Expert confirmé
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Par défaut
    Il faudrait déjà savoir ce qui signale la fin d'une trame (ou le début d'une autre) exactement...

    --
    Jedaï

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    130
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Doubs (Franche Comté)

    Informations forums :
    Inscription : Août 2008
    Messages : 130
    Par défaut
    Bonjour!

    Désolé pour le temps de réponse

    Pour ce qui est de la délimitation des trames: certaines sont délimitées par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ##CamSendCAD(INITIALIZE_CAD)
    Trame
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ##CamSetInsSent: InstLcl=25
    Où INITIALIZE_CAD peut changer (en GET_CARD_INFORMATION et le InstLcl est = à 69)

    Mais c'est assez compliqué, il y a un autre type de délimitations, mais ca bouge énormément:

    c'est du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Src=1000 Msg=MSGE_HDLC_MSGRCV(546) Status=0 Ctxt=4 Etat=11

  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Août 2009
    Messages
    156
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 156
    Par défaut Expression regulière
    En deux fois ça doit passer:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $FichierTrace =~ m{ (\w{2}\s+)+.*}mgix;
    my $expression_a_parser = $1;
    Là tu récupères juste le morceau de "un nombre de fois (2lettres + au moins une fois des espaces)" dans $expression_a_parser
    Ensuite, tu "split" sur le charactère espace avec:
    http://perl.enstimac.fr/DocFr/perlfunc.html#item_split
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    my (@exploded_res) = split("\ ", $expression_a_parser);

Discussions similaires

  1. fichier de trace
    Par flydragon dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 15/10/2007, 13h07
  2. parsing de fichier texte
    Par robert_trudel dans le forum Access
    Réponses: 4
    Dernier message: 03/06/2006, 17h45
  3. [DOM] [DocumentBuilder] Problème de parsing de fichier
    Par tck-lt dans le forum Format d'échange (XML, JSON...)
    Réponses: 9
    Dernier message: 13/04/2006, 17h18
  4. Fichiers de trace
    Par Isabella dans le forum Oracle
    Réponses: 5
    Dernier message: 25/02/2006, 13h55
  5. Parsing de fichier en C++ : Au secours :(
    Par Triqueur dans le forum C++
    Réponses: 4
    Dernier message: 16/02/2006, 14h49

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