Deutsch   English   Français   Italiano  
<slrnt8jt38.hgq.lhh+news-no_spam@hercule.home.arpa>

View for Bookmarking (what is this?)
Look up another Usenet article

Path: ...!news.mixmin.net!eternal-september.org!reader02.eternal-september.org!.POSTED!not-for-mail
From: Jacques L'helgoualc'h <lhh+news-no_spam@free.fr.isnt.invalid>
Newsgroups: fr.comp.os.linux.configuration
Subject: Re: Manipulation de =?UTF-8?Q?cha=C3=AEne?=
Date: Sun, 22 May 2022 08:29:28 -0000 (UTC)
Organization: Aucune.
Lines: 42
Message-ID: <slrnt8jt38.hgq.lhh+news-no_spam@hercule.home.arpa>
References: <f399de3b-9165-3e25-50ed-80eea97e0e2e@miakinen.net>
 <slrnt8iotm.8pd.lhh+news-no_spam@hercule.home.arpa>
 <t6bqdp$2n20$1@cabale.usenet-fr.net>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
Injection-Date: Sun, 22 May 2022 08:29:28 -0000 (UTC)
Injection-Info: reader02.eternal-september.org; posting-host="71f05b1e152aeb09f5c2c9a9eb1969e6";
	logging-data="29241"; mail-complaints-to="abuse@eternal-september.org";	posting-account="U2FsdGVkX1+qPAOlSwxvSwh6PYsCENMU"
User-Agent: slrn/1.0.3 (Linux)
Cancel-Lock: sha1:7FBeFT779gMuU8ZRlbeXFvei+FA=
Bytes: 2628

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 !