Bonjour à tous,
Je cherche un moyen en shell me permettant de récupérer les lignes précédent le résultat d'une recherche d'un mot clé dans un fichier de log. Je m'explique.
J'ai un fichier de log qui ressemble à ça:
Code :
- ...
- ...
- ....
- 2017-05-05 09:52:42.112+01:00: fdsfdsfsd fsdf ATTENTION il y a un erreur, la voici
- 2017-05-05 09:52:43.112+01:00 fdslfjdsf lfjsdfjsldjf MESSAGE D'ERREUR SQL 1
- SELECT /* Nom projet */
- ...
- COMMIT;
- 2017-05-05 09:52:44.112+01:00: fdsfdsfsd fsdf FIN ERREUR <Nom projet>
- ...
- ....
- ....
|
Dans le cadre d'un traitement plus global, je dois fouiller cette log et remonter l'erreur à l'utilisateur, sachant que la variable Nom Projet a une valeur saisie par l'utilisateur avant lancement du dit traitement.
J'ai un ligne de commande qui me permet de récupérer tout le bloc entre le SELECT et FIN ERREUR:
Code :
- sed -n '/Nom projet/,/FIN ERREUR/p' fichier_log.log
|
Mon problème est de pouvoir récupérer en plus le VRAI message d'erreur qui se trouve sur les lignes précédente, tout en sachant que tout ça est noyé dans d'autres logs dans le même fichier, et que je veux garder le filtre de recherche sur le nom du projet pour être sûr de récupérer l'erreur du projet lancé par l'utilisateur et pas un autre.
Peut-être que le sed ne va pas dans ce cas, et qu'il faut passer par un awk, mais je n'arrive à rien pour le moment.
Des idées, svp ?
Merci.