Re: Manipulation de chaîne

Liste des GroupesRevenir à fcol configuration 
Sujet : Re: Manipulation de chaîne
De : lhh+news-no_spam (at) *nospam* free.fr.isnt.invalid (Jacques L'helgoualc'h)
Groupes : fr.comp.os.linux.configuration
Date : 22. May 2022, 10:29:28
Autres entêtes
Organisation : Aucune.
Message-ID : <slrnt8jt38.hgq.lhh+news-no_spam@hercule.home.arpa>
References : 1 2 3
User-Agent : slrn/1.0.3 (Linux)
Le 21-05-2022, Olivier Miakinen a écrit :
Bonjour Jacques,
>
Le 22/05/2022 00:12, Jacques L'helgoualc'h a écrit :
>
Bien sûr je pourrais écrire "${v:0:1}\.${v:1:1}\.${v:2:1}\.${v:3}", mais
y a-t-il plus simple ?
 
 $ echo 2718281828459045 | \
sed -nre '/^[0-9]+$/!{s/^/Fuck /p;q};:x;s/([0-9])([0-9])/\1\.\2/;/(\\.[0-9]){3}/{p;q};bx'
2\.7\.1\.8281828459045
>
Ouah ! Je n'appellerais pas ça « plus simple », mais avec l'aide de
« man sed » tu viens de me faire découvrir la puissance de cette
commande que j'étais loin de soupçonner !

Sed est Turing-complet :)

Je viens d'apprendre :
- le « ! » pour ne pas exécuter une commande si l'adresse ne matche pas ;
- les blocs de commandes avec « { » et « } » ;
- l'option -n pour supprimer l'auto-print ;
- le « p;q » pour afficher le résultat puis quitter ;
- les boucles, avec un label (:x) et un branchement (bx).
>
Je connaissais le reste, mais c'était un usage tellement limité !

J'avais envisagé d'utiliser le « hold-space » pour limiter un s///g :)

[...]
Le plus simple :
 
echo 2718281828459045 |sed -e 's/[0-9]/&\./g;s/\.$//'
2\.7\.1\.8\.2\.8\.1\.8\.2\.8\.4\.5\.9\.0\.4\.5
>
Bon sang mais c'est bien sûr ! Je m'en veux de ne pas y avoir pensé
moi-même, parce que je connaissais tout ce qu'il fallait pour arriver
à cette solution.
>
Un grand merci à toi, c'est vraiment génial cette commande.

de rien !

Date Sujet#  Auteur
21 May 22 * Manipulation de chaîne4Olivier Miakinen
22 May 22 `* Re: Manipulation de chaîne3Jacques L'helgoualc'h
22 May 22  `* Re: Manipulation de chaîne2Olivier Miakinen
22 May 22   `- Re: Manipulation de chaîne1Jacques L'helgoualc'h

Haut de la page

Les messages affichés proviennent d'usenet.

NewsPortal