Re: bash

Top Page

Reply to this message
Author: Sylvain Pogodalla
Date:  
To: Yth
CC: guilde
Subject: Re: bash
Bonjour,

Yth writes:
> Le 20 février 2024 16:00:18 UTC, Patrick Dupre <pdupre@???> a écrit :
> >Desole, je n'ai pas ete clair
> >Mon exemple donne
> >
> >0 -0.562111 1
> > -0.5059 2
> > -0.449689 3
> > -0.393478 4
> > -0.337267 5
> >etc..
> >
> >Alors que je veux
> >
> >0 -0.562111
> >1 -0.5059
> >2 -0.449689
> >3 -0.393478
> >4 -0.337267
> >5 -0.281055
> >etc..


Il manque sans doute la prise en compte du '-' et du '.'.

Je propose :

sed -r 's/([0-9] -?[0-9\.]+ *)/\1\n/g'<<< "0 -0.562111 1 -0.5059 2 -0.449689 3 -0.393478 4 -0.337267 5 -0.281055 6 -0.224844 7 -0.168633 8 -0.112422 9 -0.0562111 10 0 11 0.0562111 12 0.112422 13 0.168633 14 0.224844 15 0.281055 16 0.337267 17 0.393478 18 0.449689 19 0.5059 20 0.562111"

S.


> >
> >> Bonjour,
> >>
> >> Je ne comprends pas pourquoi ceci ne fonctionnne pas correctement
> >> Il devrait couper au second espace.
> >> hors, la premiere fois il coupe au 3ieme espace
> >>
> >> sed -r 's/([0-9] [0-9]+)/\1\n/g'<<< "0 -0.562111 1 -0.5059 2 -0.449689 3
> -0.393478 4 -0.337267 5 -0.281055 6 -0.224844 7 -0.168633 8 -0.112422 9
> -0.0562111 10 0 11 0.0562111 12 0.112422 13 0.168633 14 0.224844 15 0.281055 16
> 0.337267 17 0.393478 18 0.449689 19 0.5059 20 0.562111"
> >>
> >>
> >> Merci pour vos lumieres
> >>
 > >> ===========================================================================
 > >>  Patrick DUPRÉ                                 | | email: pdupre@???
 > >> ===========================================================================

> >>
> >>
> >>
> >
>
> Ah, ok.
> Alors tu cherches des chiffres séparés par un espace, et tu ajoutes un saut à
> la ligne à la fin au lieu du milieu.
> Donc plutôt faire : 's/([0-9]) ([0-9])/\1\n\2/g'
>
> - Yth.
> --
>


--
Sylvain Pogodalla

http://members.loria.fr/sylvain.pogodalla
Centre Inria de l'Université de Lorraine
Projet Sémagramme
615 rue du Jardin Botanique    /   bureau : B 232
F-54600 Villers-lès-Nancy    /   tél.: (+33) 3 54 95 84 59