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. 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. Ç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]*//') Je suppose que j'ai pas compris un truc... -- Daniel Always forgive your enemies - nothing annoys them so much. Oscar Wilde
Bonjour, 2011/4/29 Daniel Caillibaud <ml@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
participants (2)
-
Daniel Caillibaud
-
Jeremy Monnet