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 : 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
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 : 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
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