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 :

ksh - implémenter le pattern "4 tirets + un espace + TOTO" dans une commande CASE ?


Sujet :

Shell et commandes GNU

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2008
    Messages : 10
    Points : 9
    Points
    9
    Par défaut ksh - implémenter le pattern "4 tirets + un espace + TOTO" dans une commande CASE ?
    Hello, (débutant sous LINUX + KSH)

    j'aimerais savoir quel pattern utilisé dans le CASE suivant pour trouver
    la sous-chaîne '---- TOTO'. L'exemple ci-après ne fonctionne pas bien sûr.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    case $LIGNE in
         \-\-\-\- TOTO) var1=`echo $LIGNE` 
                     echo $var1
    ;;    
    ...
    ...
    ...             
    esac
    un grand merci pour vôtre aide !!

  2. #2
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 549
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 549
    Points : 19 376
    Points
    19 376
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $ line="bla blab bla ---- TOTO blab blabl ablab la"
    $ case $line in *----\ TOTO*) echo ok;; esac
    ok
    c'est l'espace qui fâche
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2008
    Messages : 10
    Points : 9
    Points
    9
    Par défaut
    Merci beaucoup N_BaH,


    en fouillant un peu dans tes liens et ailleurs j'ai trouvé aussi cette possibilité :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    case $line in *----?([[:space:]])TOTO*) echo ok;; esac

    je sais, pour un seul espace à traiter c'est un peu lourd...mais si j'en ai plusieurs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    case $line in *----+([[:space:]])TOTO*) echo ok;; esac
    ça peut-être utile, non ?!

  4. #4
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 549
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 549
    Points : 19 376
    Points
    19 376
    Par défaut
    c'est très bien, si tu es sûr d'avoir au moins un espace.
    cependant, une telle classe de caractère est un peu lourde :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $ line="bla blab bla ----    TOTO blab blabl ablab la"
    $ case $line in *----+( )TOTO*) echo ok;; esac
    o
    c'est suffisant.

    si tu ne sais pas s'il s'agit d'espaces ou de tabulations, alors [[:blank:]] serait utile.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

Discussions similaires

  1. Réponses: 3
    Dernier message: 30/09/2009, 10h00
  2. Problème de quote dans une commande
    Par nicolas_lepot dans le forum Tcl/Tk
    Réponses: 1
    Dernier message: 01/10/2008, 16h44
  3. Tutoriel : Implémentation du pattern MVC
    Par Ricky81 dans le forum MVC
    Réponses: 0
    Dernier message: 11/02/2008, 09h51
  4. Réponses: 5
    Dernier message: 10/05/2007, 16h03
  5. Implémentation du pattern Factory
    Par tut dans le forum C++
    Réponses: 6
    Dernier message: 02/08/2006, 13h43

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