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

  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

  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 : 44
    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

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