Optimisation Script Parser de logs
Bonjour,
J'ai écris le script ci-desous pour parser mes logs, cependant je le trouve très long a s'exécuter (environ 20 à 30 min pour des fichiers de 200Mo), et je pense qu'il est possible de l'optimiser.
Mes logs sont comme cela :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
|
//stock.log
xxxxxxxxxxxxxx
xxxxxxxxxxxxxxx
xxxx
xxxxxxxxxxxx
xxxxx [Stock GTA - Live] xxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxx
xxxxxx
xxxxxxxxx [Stock GTA - Live] xxxxxxxxxxx
xxxx
xxxxxxx
xxx [Stock GTA - Preview] xxxx
xxxxx
xxxxxxxx
xxxxxx [Stock LODI - Live]
xxxxxxxxxxxxxx
xxxxxxxxxxxxxxx
xxxxxxx
xxxxxx [Stock LODI - Preview]xxxxxxxx
xxxx
xxxxxxx
xxx [Stock GTA - Preview] xxxx
xxxxxxxxxxx
xxxxxxxx
xxxxxx |
L'objectif de mon script est de séparer les logs dans des fichiers différents selon leur type :
-tous les logs suivants une ligne contenant "[Stock GTA - Preview]" sont extraits dans le fichier gtapreview.log
-tous les logs suivants une ligne contenant "[Stock GTA - Live]" sont extraits dans le fichier gtalive.log
-tous les logs suivants une ligne contenant "[Stock LODI - Preview]" OU [Stock LODI - Live] sont extraits dans le fichier lodi.log
Voici mon script bash :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
|
@echo off
setlocal enableextensions enabledelayedexpansion
set last=""
for /f "tokens=*" %%a in (stock.log) do (
set tst=%%a
rem log GTA LIVE
set tst=!tst:[Stock GTA - Live]=!
if not !tst!==%%a (
echo %%a >> gtalive.log
set last=gtalive.log
) else (
rem log GTA PREVIEW
set tst=!tst:[Stock GTA - Preview]=!
if not !tst!==%%a (
echo %%a >> gtapreview.log
set last=gtapreview.log
) else (
rem log LODI
set tst=!tst:[Stock LODI=!
if not !tst!==%%a (
echo %%a >> lodi.log
set last=lodi.log
) else (
rem log idem last
if not !last! == "" (
echo %%a >> !last!
)
)
)
)
) |
J'ai fait ce script en 1 journée sans connaissance préalable du batch, je n'ai donc pas trop de recul..
Faudrait t-il utiliser un autre langage pour gagner en performance ?
Faudrait t'il s'y prendre autrement au niveau du code ?
PS: à par le temps d’exécution, j'ai un autre problème, les lignes vides sont supprimées par mon script
Merci d'avance pour votre aide :)