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

Shell et commandes GNU Discussion :

Besoin d'aide pour une expression régulière


Sujet :

Shell et commandes GNU

  1. #1
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 170
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 170
    Points : 7 421
    Points
    7 421
    Billets dans le blog
    1
    Par défaut Besoin d'aide pour une expression régulière
    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...

  2. #2
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 170
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 170
    Points : 7 421
    Points
    7 421
    Billets dans le blog
    1
    Par défaut
    Finalement, en cherchant un peu, cette expression à l'air de faire l'affaire...

  3. #3
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 102
    Points : 5 851
    Points
    5 851
    Par défaut
    Citation Envoyé par StringBuilder Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    grep -e 'PASTRO' -e '^\*\*\*' $HOME/log/$LOG.log > $HOME/log/$LOG.grep
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ***Erreur dans le fichier ...
    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
    Bonjour.

    Avec des spécifications aussi précises, c'est du gâteau! (Miam...)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    grep -e 'PASTRO' -e '^\*\*\*[^*]' $HOME/log/$LOG.log > $HOME/log/$LOG.grep
    qui se lit: chercher un début de ligne, suivi de 3 étoiles, suivies d'un caractère différent de '*'.

    Edit: Grillé (de peu...)

  4. #4
    Expert éminent

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Points : 6 276
    Points
    6 276
    Par défaut
    Salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $ cat plop 
    ***Erreur dans le fichier ...
     
     
    ***********
    * Etape 1 *
    ***********
     
       ***********
       * Etape 1 *
       ***********
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $ egrep '^\*{3}\b' plop 
    ***Erreur dans le fichier ...
     
    $

Discussions similaires

  1. [egrep] Besoin d'aide pour une expression régulière
    Par het44 dans le forum Shell et commandes GNU
    Réponses: 9
    Dernier message: 18/05/2013, 22h29
  2. Besoin d'aide pour une expression régulière
    Par chlon dans le forum Requêtes
    Réponses: 4
    Dernier message: 16/07/2009, 16h41
  3. [RegEx] Besoin d'aide pour une expression régulière
    Par vallica dans le forum Langage
    Réponses: 4
    Dernier message: 04/09/2007, 19h59
  4. Besoin d'aide pour une expression reguliere
    Par Jim_Nastiq dans le forum Langage
    Réponses: 5
    Dernier message: 10/04/2006, 09h11
  5. Besoin d'aide pour une expression régulière
    Par planetiss dans le forum Langage
    Réponses: 5
    Dernier message: 16/02/2006, 19h04

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