Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > fr.comp.lang.regexp > #252
| From | Olivier Miakinen <om+news@miakinen.net> |
|---|---|
| Newsgroups | fr.comp.os.unix, fr.comp.os.linux.configuration, fr.comp.lang.regexp |
| Subject | Shell : extraire d'une chaine plusieurs sous-chaines |
| Followup-To | fr.comp.os.unix |
| Date | 2025-11-25 19:08 +0100 |
| Organization | There's no cabale |
| Message-ID | <10g4rbq$2i1$1@cabale.usenet-fr.net> (permalink) |
Cross-posted to 3 groups.
Followups directed to: fr.comp.os.unix
[diapublication, suivi vers fr.comp.os.unix seul] Bonjour, Dans un script ksh, je cherche la façon la plus élégante d'extraire d'une chaine plusieurs sous-chaines. Le cas réel est plus complexe que celui que je vais exposer, mais je saurai extrapoler ensuite. Supposons que j'ai une chaine constituée d'1 ou plusieurs lettres, puis 1 chiffre, puis optionnellement d'autres lettres, puis encore 1 ou plusieurs chiffres. Pour fixer les idées, disons que la chaine répondrait à la regex suivante : /[a-z]+[0-9][a-z]*[0-9]+/ Je voudrais extraire chaque partie dans une variable différente. Quelques exemples : s="test1xyz27" -> v1="test" v2="1" v3="xyz" v4="27" s="aa9toto000" -> v1="aa" v2="9" v3="toto" v4="000" s="x012" -> v1="x" v2="0" v3="" v4="12" Bien sûr je sais le faire en autant d'étapes qu'il y a de parties à récupérer, en obtenant les variables l'une après l'autre. Mais existe-t-il un moyen plus direct ? Quelques précisions : - le ksh sur cette machine ne connait pas la syntaxe [[ ... =~ ... ]] - mais j'ai accès à perl 5, sed, awk, et probablement d'autres outils unix standards. [suivi par défaut vers fcou mais vous pouvez faire suivre ailleurs si cela vous semble plus approprié] Cordialement, -- Olivier Miakinen
Back to fr.comp.lang.regexp | Previous | Find similar | Unroll thread
Shell : extraire d'une chaine plusieurs sous-chaines Olivier Miakinen <om+news@miakinen.net> - 2025-11-25 19:08 +0100
csiph-web