Bonjour à tous,

Je suis en train d'écrire un script qui à pour but de parser un fichier de logs et d'en sortir uniquement les infos qui m'intèresse.

Les infos dans ce fichier sont sous cette forme :


================New Request: [GET /brol/brol/ HTTP/1.1] =================
Thu Aug 5 14:06:25 2010 <208612810099851> INFO: SSL is not configured
Thu Aug 5 14:06:25 2010 <208612810099851> Using Uri /brol/brol/
Thu Aug 5 14:06:25 2010 <208612810099851> After trimming path: '/brol/brol/'
Thu Aug 5 14:06:25 2010 <208612810099851> The final request string is '/brol/brol/'
.
.
.
.
.
.
Thu Aug 5 14:06:25 2010 <208612810099851> canRecycle: conn=1 status=302 isKA=1 clen=-1 isCTE=1
Thu Aug 5 14:06:25 2010 <208612810099851> request [/brol/brol/] processed successfully..................
Ceci est l'exemple pour une requête mais le fichier en contient des milliers.
J'ai besoin de parser ce fichier en extrayant seulement la première (New Request) et la derniere (processed successfully) ligne de la requête et ceci pour toutes les requêtes dans le fichier de log.

Voici mon script :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
#!/bin/bash
 
while read ligne;  do
        #echo $ligne
        if [[ "$ligne" == "*New Request*" ]]; then
                echo $ligne
                read ligne_interne
                echo $ligne_interne
                while [[  "$ligne_interne" != "*processed successfully*" ]; do
                        read ligne_interne
                done
        fi
done < stats.log
Malheureusement, il ne m'affiche rien, le script n'entre pas dans le if.
Voyez vous le soucis? Je n'ai pas d'erreur au moment où j'exécute le script.
Je travaille sous Solaris 8.

Vous voyez quelque chose?

Merci d'avance pour votre aide.