Léa-Linux & amis :   LinuxFR   GCU-Squad   GNU
Bash expression régulière
Envoyé par: Ubuntu66

Bonjour,


e souhaiterai récupérer une sous chaîne contenu dans une chaîne en bash. La chaîne de départ est contenu dans une variable test. La sous chaîne recherchée est présente entre [] dans la chaîne.
ex:
#!/bin/sh
test =" test1 test2 test3 test4 [je suis la sous chaîne]"
echo $souschaine --> je suis la sous chaîne


Dans un post précedent, j'ai eu comme réponse:

souschaine=${test#*\[}
souschaine=${souschaine%\]*}


Mon problème est que cette méthode marche très bien si j'ai simplement qu'un crochet ] dans la chaine.
Dans mon cas,test peut être égal à test =" test1 test2 test3 test4 [je suis la sous chaîne] test5 [je suis qqn d'autre]"
Si j'applique la méthode d'écrite en haut ça fonctionne pas.

Poste le Thursday 30 August 2007 11:39:18
Répondre     Citer    
Re: Bash expression régulière
Envoyé par: oudoubah

Il y a peut être plus simple, mais en attendant voici une méthode :
getsouschaine() {
        souschaine="$*"
        souschaine=${souschaine#*\[}
        atraiter=${souschaine#*\]}
        souschaine=${souschaine%"$atraiter"}
        chainefinale="$chainefinale $souschaine"
        [ "$atraiter" != "$*" ] && getsouschaine $atraiter
}

chainefinale=""
getsouschaine $chaine3
chainefinale=${chainefinale//\]/}

Tu as lu les docs. Tu es devenu un informaticien. Que tu le veuilles
ou non. Lire la doc, c'est le Premier et Unique Commandement de
l'informaticien.
-+- TP in: Guide du Linuxien pervers - "L'évangile selon St Thomas"

Poste le Thursday 30 August 2007 12:22:50
Répondre     Citer    
Re: Bash expression régulière
Envoyé par: ulrich

sed?

souschaine=`echo $test | sed -n 's/.*\[\([a-z ][a-z ]*\)\].*/\1/p'`

Poste le Thursday 30 August 2007 14:52:44
Répondre     Citer    
Re: Bash expression régulière
Envoyé par: Ubuntu66

OK merci

Poste le Thursday 30 August 2007 15:05:50
Répondre     Citer    

Veuillez vous authentifier auparavant pour commenter.

 

Ce forum !
Bash expression régulière
Pour poser vos questions sur les scripts shell, le Perl, le C, etc... Attention : nous ne sommes pas des spécialistes du dev, ce forum est juste pour de petites aides ponctuelles concernant le développement et les outils de développement.

Sauf mention contraire, les documentations publiées sont sous licence Creative-Commons