Bonjour,

Dans un shell, je contrôle s'il y a des lignes en erreur dans un fichier de log.

Seulement, après changement de version du logiciel qui crée les fichiers de logs, j'ai identifié un morceau du code qui ne se comporte plus comme il devrait.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
grep -e 'PASTRO' -e '^\*\*\*' $HOME/log/$LOG.log > $HOME/log/$LOG.grep
Au départ, le fichier contenait des lignes d'erreur du genre :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
***Erreur dans le fichier ...
Et des lignes de mise en forme du genre :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
   ***********
   * Etape 1 *
   ***********
Seulement, maintenant les lignes de mise en forme n'ont plus les espaces en début de ligne.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
***********
* Etape 1 *
***********
Du coup l'expression régulière '^\*\*\*' est vraie pour les lignes "**********".

Comment modifier cette expression pour que le grep ne retourne que les lignes d'erreur.

J'ai identifié deux règles qui répondent au filtre :
- Commence par 3 étoile, et ne termine pas par une étoile
- Contient au maximum 3 étoiles en début de ligne

Mais je n'arrive pas à faire la modification...

Et le man n'aborde même pas l'écriture d'expressions régulières...