extraction des erreurs dans un log [bash] - Shell/Batch - Programmation
Marsh Posté le 28-07-2009 à 18:11:27
Bon, j'ai réussi à pondre mon code optimisé, je passe de 3 min à 3 secondes, la puissance du AWK quoi
Marsh Posté le 29-07-2009 à 22:18:48
rapha3L a écrit : Bon, j'ai réussi à pondre mon code optimisé, je passe de 3 min à 3 secondes, la puissance du AWK quoi |
T'as tenté la puissance du Python ???
Code :
|
Et je n'ai fait que réécrire ton algo shell...
Marsh Posté le 29-07-2009 à 23:24:59
Jteste demain sur un log de 140mo
Programe testé, il a pas trop apprécié la variable `continue` donc je l'ai remplacé par autre chose.
Ton script en python est bien mais il reste 2 fois plus lent
Néanmonis le python semble intéressant et "facile" à utiliser. Si t'as un bon tuto, je suis preneur
Mon truc en awk:
Code :
|
Marsh Posté le 30-07-2009 à 17:57:06
C'est un script que je vais utiliser ptet 2 fois dans l'année, donc on va dire que je suis allé à l'essentiel
Marsh Posté le 30-07-2009 à 18:00:40
sinon si c'est le premier mot, te biles pas, tu peux faire ça avec grep.
Marsh Posté le 30-07-2009 à 18:32:12
J'ai utilisé grep ERROR -A 2 pour avoir les 2 premières lignes. Mais comme j'avais du temps à tuer je suis parti dans un truc un peu plus complet.
D'ailleurs jvais ptet me mettre au Perl histoire de m'occuper
Marsh Posté le 30-07-2009 à 20:43:54
rapha3L a écrit : Programe testé, il a pas trop apprécié la variable `continue` donc je l'ai remplacé par autre chose. |
Arf suis trop con. J'ai utilisé ta variable shell sans penser que c'était un mot clef Python (et aussi C, Pascal et autres). Mais bon, j'ai tapé ça "en live"...
rapha3L a écrit : Ton script en python est bien mais il reste 2 fois plus lent |
Là suis étonné !!!
rapha3L a écrit : Néanmoins le python semble intéressant et "facile" à utiliser. Si t'as un bon tuto, je suis preneur |
Le tuto de Swinnen (400 pages). Tape "python swinnen" dans un moteur de recherche...
rapha3L a écrit : D'ailleurs jvais ptet me mettre au Perl histoire de m'occuper |
Et pas Python ???
Marsh Posté le 30-07-2009 à 21:29:44
Héhé. J'ai lu quelques comparatifs python/perl aujourd'hui, tout le monde semble être d'accord sur le fait que perl est illisible et que python est plus facile pour les débutants.
Vous avez pu le constater, je sais pas programmer et mon bash vole pas haut, jrisque de m'y casser les dents sur le perl.
Néanmoins jvais tremper le bout des doigts dans les docs que j'ai trouvé et tester si j'arrive à quelquechose.
Je compte aussi tester python par la suite, ne t'inquiète pas. Par contre j'aurai peu d'occasion de l'utiliser dans mon taf, du coup je sais pas si c'est intéressant de se farcire des docs de 400 pages
Concernant la vitesse d'éxecution de ton script, j'ai dit que c'étais 2 fois plus lent, donc en gros 3 bonnes secondes. De plus, mon log de 140mo ne contenait que 28 erreurs, c'est ptet pas assez... Demain je teste avec 2000 erreurs histoire de voir comme ce débrouillent nos scripts
Marsh Posté le 30-07-2009 à 22:46:47
rapha3L a écrit : Héhé. J'ai lu quelques comparatifs python/perl aujourd'hui, tout le monde semble être d'accord sur le fait que perl est illisible et que python est plus facile pour les débutants. |
C'est vrai que Python ça s'apprend les doigts dans le nez comparé à d'autres langages (je suis tombé hier sur un tuto de "Rebol", j'ai été gavé au bout de 3 lignes)
rapha3L a écrit : Je compte aussi tester python par la suite, ne t'inquiète pas. Par contre j'aurai peu d'occasion de l'utiliser dans mon taf, du coup je sais pas si c'est intéressant de se farcir des docs de 400 pages |
Effectivement. Faut en avoir l'utilité. Mais bon, sur les 400 pages, il y a un gros pavé dédié aux librairies (sql, tkinter, turtle, etc) et la partie pur Python est plus réduite...
Marsh Posté le 31-07-2009 à 08:21:23
rapha3L a écrit : Héhé. J'ai lu quelques comparatifs python/perl aujourd'hui, tout le monde semble être d'accord sur le fait que perl est illisible et que python est plus facile pour les débutants. |
Sinon les vrais hommes codent et logguent avec log4* ou syslog, du coup, les erreurs peuvent être redirigées directement vers un log spécial.
Marsh Posté le 28-07-2009 à 15:44:00
Bongour
Voila, je souhaite extraire les erreurs d'un fichier log de type
DEBUG <25/07/2009 13:42>, blabla
blabla
DEBUG <25/07/2009 13:42>, blabla
blabla
ERROR <25/07/2009 14:51>, blabla
blabla blabla blabla
blabla blabla blabla
L'objectif est d'extraire les erreurs avec tout le blabla en dessous, ce qui représente en gros une 100aine de lignes par erreur.
J'ai fais un script à l'arrache qui me permet de récupérer tout ce qu'il faut, le problème c'est qu'il met 3 min pour un fichiers de log de 70.000 lignes
Attention les yeux
while read lignes
do
case $(echo $lignes | cut -d " " -f1 ) in
ERROR) echo "" >> $file && echo $lignes >> result.txt && continue=1 ;;
DEBUG|WARN|INFO) continue=0;;
*) if [ "$continue" = "1" ];then echo $lignes >> $file ;fi;;
esac
done < $log
Avec awk j'arrive uniquement à extraire la ligne contenant le champ ERROR mais j'arrive pas à récupérer tout le blabla qui vient après. Z'auriez pas une idée?
Thx
Message édité par rapha3L le 28-07-2009 à 15:44:41