[a-z] en regex shell match tout

Jeremy Monnet jmonnet at gmail.com
Fri Apr 29 19:22:56 CEST 2011


Bonjour,

2011/4/29 Daniel Caillibaud <ml at lairdutemps.org>:
> Bonjour,
>
> En rédigeant un petit mémo sur les traitements de variable en bash je suis tombé sur un truc
> bizarre. J'avais noté (à partir de http://abs.traduc.org/abs-fr/ch09s02.html)
>
> ${chaine%%regex} : Supprime la plus grande correspondance de regex à partir de la fin de
> $chaine.
Il s'agit de globbing shell, pas de regex

>
> Mais visiblement mon bash prend tous les caractères comme faisant partie de [a-z].
>
> chaine=une.petite.phrase.courte.123;
> echo ${chaine%%[0-9]*}
> une.petite.phrase.courte.
oui, mais par hasard :-) rajoutes des chiffres plus tôt dans la
chaîne, et observe le résultat !

>
> Ça c'est le résultat que j'attendais, mais
> echo ${chaine%%[a-z]*}
>
> me renvoie toujours une ligne vide, idem pour
> echo ${chaine##[a-z]*}
> ou
> echo ${chaine##[aeioun]*}
> (je m'attendais à '.petite.phrase.courte.123' comme echo $chaine|sed 's/^[a-z]*//')
sed, par contre c'est de la regex vraie de vraie ...

Librement,

Jeremy


More information about the Shell mailing list