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

Linux Discussion :

Expressions regulieres dans condition


Sujet :

Linux

  1. #1
    Membre du Club Avatar de Matmal11
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 111
    Points : 50
    Points
    50
    Par défaut Expressions regulieres dans condition
    Bonjour,

    Je lis un fichier avec un script .sh
    Ce fichier comporte des lignes commencant soit par un numéro, soit par un #.
    Je n'arrive pas à créer une condition du style:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    read LINE
    While ( $LINE ne commence pas par un # ); do
    instructions
    done
    Pourriez-vous m'aider? J'aimerais faire ça avec une expression régulière afin de me familiariser avec leur utilisation sous unix.

    Merci par avance
    Mat

  2. #2
    Modérateur
    Avatar de ggnore
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 472
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 472
    Points : 4 029
    Points
    4 029
    Par défaut
    Ton while laisse sous entendre que dés qu'on n'a une ligne qui commence par #, on s'arrête.

    C'est ce que tu veux ou tu veux:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    tant qu'on n'est pas à la fin du fichier
     si la ligne ne commence pas par un # alors
      [traitement]
     fin si
    fin tant que
    Toutes les vertus des hommes se perdent dans l’intérêt comme les fleuves se perdent dans la mer.
    N'oubliez pas de consulter les FAQ Linux et les cours et tutoriels Linux

  3. #3
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    Solution 1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    cat fichier | while read LINE
    do
      if `echo "$LINE" | grep -qv '^#' 2>/dev/null`
      then
        instructions
      fi
    done
    Solution 2 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    cat fichier | sed 's/^#/d' | while read LINE
    do
      instructions
    done

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

  4. #4
    Membre expérimenté
    Avatar de narmataru
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 548
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 548
    Points : 1 680
    Points
    1 680
    Par défaut
    Bonjour,
    Pourquoi ne pas utiliser simplement grep ?

    Peut qu'un truc du style fonctionnerais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    egrep "^[0-9#]" lefichier.txt | monScriptDeTraitement.sh

  5. #5
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    Surement que oui, mais le traitement sera plus délicat à faire, je pense, vu qu'il faut l'entrée standard, et je ne sais pas comment on fait une lecture ligne à ligne dans ce cas-là.

    Sinon, effectivement, 3ème solution pour les amoureux de grep (perso, j'adore sed, alors j'en mets dès que je peux) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    cat fichier | grep -v '^#' | while read LINE
    do
      instructions
    done

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

Discussions similaires

  1. Expression reguliere dans un enregistrement
    Par frizby dans le forum Requêtes
    Réponses: 0
    Dernier message: 16/06/2008, 12h34
  2. utiliser les expression regulieres dans vb
    Par subzero01 dans le forum Windows Forms
    Réponses: 6
    Dernier message: 10/01/2008, 12h32
  3. [expression reguliere dans matches()]
    Par jayjaypg22 dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 23/11/2007, 16h08
  4. Expression reguliere dans fichier texte
    Par azmimik dans le forum Général Python
    Réponses: 6
    Dernier message: 02/01/2007, 23h48
  5. expression reguliere dans schema
    Par lafracas dans le forum Valider
    Réponses: 2
    Dernier message: 14/05/2006, 19h54

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