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

Scripts/Batch Discussion :

Optimisation Script Parser de logs


Sujet :

Scripts/Batch

  1. #1
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 17
    Par défaut 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 : 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

  2. #2
    Membre Expert
    Avatar de sachadee
    Homme Profil pro
    AMI DU BAT
    Inscrit en
    Janvier 2013
    Messages
    1 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Brésil

    Informations professionnelles :
    Activité : AMI DU BAT
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2013
    Messages : 1 478
    Par défaut
    Salut,

    Tes balises " [Stock GTA - Live], [Stock GTA - Preview],..." sont toujours en 2eme position sur leurs lignes ?

    Amicalement

  3. #3
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 17
    Par défaut
    Citation Envoyé par sachadee Voir le message
    Salut,

    Tes balises " [Stock GTA - Live], [Stock GTA - Preview],..." sont toujours en 2eme position sur leurs lignes ?

    Amicalement
    Oui elles sont toujours en 2ieme positions

    Une idée ?

    Merci d'avance

  4. #4
    Membre Expert
    Avatar de sachadee
    Homme Profil pro
    AMI DU BAT
    Inscrit en
    Janvier 2013
    Messages
    1 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Brésil

    Informations professionnelles :
    Activité : AMI DU BAT
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2013
    Messages : 1 478
    Par défaut
    salut,

    Essaye ce code on utilise une boucle "FOR" avec moins de test

    Je pense que ça sera plus rapide essaye et retourne le résultat. Mais de toute façon avec un fichier de 200 Mb ça va prendre du temps....

    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
    :::::::Par SachaDee
    :::::::10-04-2013
    
    @echo off
    
    set $stock=stock
    set $fichier=nil
    
    setlocal enabledelayedexpansion enableextensions
    
    
    
    for /f  "tokens=1,2* delims=[]" %%a in (stock.log) do (
    					set $balise=%%b
    					set $temp1=!$balise:stock =!
    					set $liste=!$temp1: - =!
                                            set $dif=!$liste:~0,5!
                                            if  not !$dif!==%$stock% set $fichier=!$liste!
    					if /i !$dif!!==%$stock% (echo %%a %%b %%c>>!$fichier!.log))
    
    del nil.log
    
    
    :end
    Amicalement

Discussions similaires

  1. Optimisation script pour réordonner des N° de Lots
    Par polemoss dans le forum MySQL
    Réponses: 1
    Dernier message: 06/06/2007, 18h37
  2. [shell script] parser un fichier en colonne
    Par Blo0d4x3 dans le forum Linux
    Réponses: 11
    Dernier message: 22/04/2007, 11h38
  3. parser des logs
    Par clancy182 dans le forum Langage
    Réponses: 5
    Dernier message: 30/08/2006, 15h55
  4. Réponses: 2
    Dernier message: 04/08/2005, 21h37

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