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 :

parser des logs


Sujet :

Langage Perl

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 40
    Points : 32
    Points
    32
    Par défaut parser des logs
    Hello,

    J'ai un petit soucis avec des logs que je dois parser.
    J'ai pour habitud d'utiliser awk ou perl pour faire cette tache mais la je ne m'en sors pas...
    normalement je lis le fichier ligne par ligne et j'extrai les champs qui m'interessent, mais cette fois ci, une connexion prend deux lignes.
    par contre , il y'a un champ id qui permet d'identifier les lignes qui representes la meme connexion.

    exemple:

    id=1 etat=debut champ2=x champ3=x champ4=x //debut connexion
    id=2 etat=debut champ2=x champ3=x champ4=x
    id=3 etat=debut champ2=x champ3=x champ4=x
    id=1 etat=fin champ6=x champ7=x champ8=x //fin connexion
    id=4 etat=debut champ2=x champ3=x champ4=x
    id=2 etat=fin champ6=x champ7=x champ8=x
    id=3 etat=fin champ6=x champ7=x champ8=x
    id=4 etat=fin champ6=x champ7=x champ8=x
    .....

    donc en gros, il y'a 2 enregistrements, un pour le debut avec des champs à recuperer, et un pour la fin avec des champs à recuperer, et ces deux lignes on le meme id.


    Comment obtenir un dans un fichier resultat tous les champs sur une meme ligne pour chaque connexion:

    id=1 champ2=x champ3=x champ4=x champ6=x champ7=x champ8=x
    id=2 champ2=x champ3=x champ4=x champ6=x champ7=x champ8=x
    id=3 champ2=x champ3=x champ4=x champ6=x champ7=x champ8=x
    id=4 champ2=x champ3=x champ4=x champ6=x champ7=x champ8=x

    sachant qu'il peut y avoir 5 000 000 de lignes dans le fichier, donc a priori c'est delicat d'utiliser des tableaux de memoire , nan ?
    merci d'avance

  2. #2
    En attente de confirmation mail
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2006
    Messages
    123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2006
    Messages : 123
    Points : 82
    Points
    82
    Par défaut
    salut,

    il est pas possible de concatener tes champs dans une table de hachage en PERL?

    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
     
    foreach $ligne (@fichier)
    { 
        ##Extraction de l'id
         if ($ligne =~ /ID=(\w+)/i){
              $id=$1;
              }
        ##Extraction des champs
         $champs = $ligne;
         $champs =~ s/ID=$id//;
     
         if (defined $table{$id}){
                  $table{$id} .= $champs;
            }
         else{
                  $table{$id} = $champs;
            }
    }
    Je ferai qqchose comme ça . Je sais pas si tu te sers de l'etat debut /fin. Est important l'ordre des champs??
    voila

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 40
    Points : 32
    Points
    32
    Par défaut
    oui l'ordre est important , mais le fait d'utiliser un tableau pour stocker les valeurs des champs, si j'ai 1 000 000 de connexions, j'aurai pas un gros pb de mémoire ?

    merci pour ta réponse

  4. #4
    Expert éminent
    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
    Points : 8 586
    Points
    8 586
    Par défaut
    Tout dépend de la répartition de tes connexions, et la solution que je vais te proposer ne marcheras pas si tes débuts de connexions se font en bloc avant toutes les fins de connexions, mais tu peux te contenter de ne maintenir en mémoire que les connexions dont tu as rencontré le début mais pas la fin, quitte à trier plus tard selon l'id si c'est important pour toi.

    --
    Jedaï

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 40
    Points : 32
    Points
    32
    Par défaut
    propose toujours peut etre que je trouverai une partie interessante à exploiter
    peux tu me dire comment faire pour enlever une entrée dans un tableau (pour ne garder en memoire que les connexions encore 'active')

  6. #6
    Expert éminent
    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
    Points : 8 586
    Points
    8 586
    Par défaut
    Citation Envoyé par clancy182
    propose toujours peut etre que je trouverai une partie interessante à exploiter
    peux tu me dire comment faire pour enlever une entrée dans un tableau (pour ne garder en memoire que les connexions encore 'active')
    Il faut utiliser un hash plutôt qu'un tableau, et supprimer les valeurs en trop avec delete().

    --
    Jedaï

Discussions similaires

  1. Réponses: 5
    Dernier message: 18/03/2011, 22h43
  2. Format des logs Pcap / TcpDump
    Par Kikx dans le forum C++
    Réponses: 9
    Dernier message: 28/09/2006, 10h41
  3. Réponses: 2
    Dernier message: 04/08/2005, 21h37
  4. Gestion des .log sous Oracle
    Par SANOORA dans le forum Administration
    Réponses: 10
    Dernier message: 08/11/2004, 09h29
  5. parser des fichier .xml en perl
    Par djibril dans le forum Modules
    Réponses: 13
    Dernier message: 18/05/2004, 17h08

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