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 :

Filtrer le contenu d'un fichier log


Sujet :

Shell et commandes GNU

  1. #1
    Candidat au Club
    Homme Profil pro
    Collégien
    Inscrit en
    Octobre 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Collégien

    Informations forums :
    Inscription : Octobre 2014
    Messages : 8
    Points : 4
    Points
    4
    Par défaut Filtrer le contenu d'un fichier log
    Bonjour a tous,

    Voila j'ai un fichier log qui se nomme toto.log. Dans ce fichier j'ai:
    toto le 1 janvier 2016
    3 pains
    5 bonbons

    toto le 1 fevrier 2016
    7 pains
    2 bonbons

    toto le 1 mars 2016
    8 pains
    3 orange

    toto le 1 avril 2016
    1 pains
    3 bonbons
    Objectif:

    Pouvoir récupérer dans un fichier résultat, tous les bonbons que toto a acheté par mois.

    Ce que j'ai fait, mais sans succès bien sur:

    Création du fichier filtre-toto.txt et dans ce fichier j'ai toto et bonbons.

    je lance:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fgrep -f filtre-toto.txt toto.log
    objectif non atteint
    j'ai essayé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    grep -E '(toto|bonbons)' toto.log
    objectif non atteint

    Avant que toto me ruine
    Je vous sollicite, pour votre aide

    Vous en remerciant par avance,

    Yum57

  2. #2
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 309
    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 309
    Points : 12 817
    Points
    12 817
    Par défaut
    Bonjour,

    Avant de coder quoi que ce soit, une question:
    Comment déterminer le début et la fin d'un paragraphe dans ton fichier, sachant qu'un paragraphe représente un mois ou potentiellement toto à un certain nombre de bonbons (toto et/ou bonbon pouvant ne pas être présent dans le dit paragraphe mensuel) ?

  3. #3
    Candidat au Club
    Homme Profil pro
    Collégien
    Inscrit en
    Octobre 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Collégien

    Informations forums :
    Inscription : Octobre 2014
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    Bonjour disedorgue et merci par avance de ton aide.

    Pour répondre à ta question, "c'est fait a la main" soory

    Le résultat attendus est:

    toto le 1 janvier 2016
    5 bonbons

    toto le 1 fevrier 2016
    2 bonbons

    toto le 1 avril 2016
    3 bonbons

  4. #4
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 309
    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 309
    Points : 12 817
    Points
    12 817
    Par défaut
    Je me doute que le résultat attendu est ce que tu donnes, ce qui m’intéresse, c'est comment on détermine les lignes qui font partie du même mois ?

  5. #5
    Candidat au Club
    Homme Profil pro
    Collégien
    Inscrit en
    Octobre 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Collégien

    Informations forums :
    Inscription : Octobre 2014
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    J'en n'ai aucune idée disedorgue,

    C'est pour cela que je demande de l'aide

    Si on numérote les lignes ça peux servir de tag ?

    Yum

  6. #6
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 309
    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 309
    Points : 12 817
    Points
    12 817
    Par défaut
    Ok,

    Voici une méthode possible avec awk qui fonctionne sur ton fichier exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    awk '/toto/ {toto=1;bonbon=0;X=$0};/bonbon/ {bonbon=1};toto && bonbon {toto=0;print X"\n"$0"\n"}' toto.log

  7. #7
    Candidat au Club
    Homme Profil pro
    Collégien
    Inscrit en
    Octobre 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Collégien

    Informations forums :
    Inscription : Octobre 2014
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    Un grand merci a toi disedorgue

    Je met en résolu

    Bien a toit @+

  8. #8
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 309
    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 309
    Points : 12 817
    Points
    12 817
    Par défaut
    Sauf que cela ne résout pas tous les cas possibles, comme par exemple celui-ci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    toto le 1 avril 2016
    1 pains
    3 oranges
     
    titi le 1 decembre 2016
    2 pains
    5 bonbons

  9. #9
    Candidat au Club
    Homme Profil pro
    Collégien
    Inscrit en
    Octobre 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Collégien

    Informations forums :
    Inscription : Octobre 2014
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    et avec un ca devrait etre bon non ?

  10. #10
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 309
    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 309
    Points : 12 817
    Points
    12 817
    Par défaut
    Non,

    Les 5 bonbons appartiennent à titi, or le bout de code awk te diras qu'ils appartiennent à toto...

    Pour filtrer correctement, il faut être capable de découper en paragraphe d'appartenance, et donc avoir une règle qui dit :
    cette ligne appartient à toto (ligne toto comprise), et là j'ai atteint la fin des lignes appartenant à toto...

    Ton fichier exemple, donne 2 possibilité pour un paragraphe complet:
    Première possibilité:
    -Commence avec la ligne ou l'on trouve toto et fini à la première ligne vide.
    Deuxième possibilité (rarement possible dans la vraie vie, une possibilité aussi linéaire) :
    -Un paragragphe est une suite de 4 lignes (on compte la ligne vide).

    Si tu sais comment identifier un paragraphe dans ton log, tu pourras faire tous les cas, sinon, pas possible.

  11. #11
    Candidat au Club
    Homme Profil pro
    Collégien
    Inscrit en
    Octobre 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Collégien

    Informations forums :
    Inscription : Octobre 2014
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    Merci Beaucoup vraiment,

    pour l'instant dans l’état actuel cela me convient bien, "je vais plancher sur ton précédent message et continu a travailler dessus"

    si je rencontre une difficulté que je ne peut résoudre "code" alors je me permettrait de revenir
    dés fois ou toto me ruine.

    Merci disedorgue

    @+

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

Discussions similaires

  1. Trier par ordre chronologique le contenu d'un fichier log
    Par Schum25 dans le forum Général Python
    Réponses: 9
    Dernier message: 06/06/2012, 11h15
  2. filtrer sons reseaux avec un fichier log
    Par newsuser dans le forum Réseau/Web
    Réponses: 0
    Dernier message: 28/11/2011, 01h17
  3. Filtrer les lignes d'un fichier log.
    Par nioniousa dans le forum Développement de jobs
    Réponses: 8
    Dernier message: 27/03/2010, 00h51
  4. [IFRAME] afficher le contenu d'un fichier .log
    Par kururin dans le forum Balisage (X)HTML et validation W3C
    Réponses: 0
    Dernier message: 27/10/2009, 12h32
  5. filtrer le contenu d'un fichier texte
    Par darkwall_37 dans le forum Windows
    Réponses: 3
    Dernier message: 13/11/2007, 01h28

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