Ou : comment extraire les infos intéressantes d'un ramassis de logs applicatives, correspondant à des traitements lancés "en sournois" via des jobs Oracle.


for i in Pkg_Tfj*trc*
do 
  echo $i | perl -nle 'exit 1 if m/.+\.gz$/'
  if [ $? -eq 1 ]
  then
    gzcat $i | perl -nle 'print if m/(?:P_TFJAuto.+(?:Debut|Fin)\s\s|Erreur)/'
  else
    cat   $i | perl -nle 'print if m/(?:P_TFJAuto.+(?:Debut|Fin)\s\s|Erreur)/'
  fi
done| \
  perl -nle '$a{$3.$2.$1.$4}=$_ if m{^(\d+)/(\d+)/(\d+)(.+)};
             END{print $a{$_}foreach sort keys %a}'

Qui nous donnera un magnifique :

(...)
19/09/07 22:30:05 -P_TFJAuto ---- Debut ----xxx
19/09/07 23:24:48 -P_TFJAuto ---- Fin ----xxx
20/09/07 22:30:06 -P_TFJAuto ---- Debut ----xxx
20/09/07 23:28:59 -P_TFJAuto ---- Fin ----xxx
21/09/07 22:30:02 -P_TFJAuto ---- Debut ----xxx
21/09/07 23:29:48 -P_TFJAuto ---- Fin ----xxx
24/09/07 22:30:04 -P_TFJAuto ---- Debut ----xxx
24/09/07 23:29:39 -P_TFJAuto ---- Fin ----xxx
25/09/07 22:30:05 -P_TFJAuto ---- Debut ----xxx
26/09/07 06:49:19 -P_TFJAuto ---- Fin ----xxx
27/09/07 02:00:03 -P_TFJAuto ---- Debut ----xxx
27/09/07 02:02:58 -Erreur dans TFJ
27/09/07 02:02:58 -P_TFJAuto ---- Fin ----xxx

La dernière ligne de Perl servant à trier les logs par ordre chronologique (dates dans les logs au format français... application "professionnelle").

Je laisse le soin au lecteur d'utiliser les données extraites pour calculer les temps de traitement !
^__^