OVH Cloud OVH Cloud

Expression régulière

11 réponses
Avatar
Sylvain A.
Bonjour à tous,

Je n'ai jamais vraiment eu le temps de m'intéresser aux expressions
régulières, mais aujourd'hui j'aurais besoin d'extraire de cette ligne
(résultat d'un ping) les trois variables min avg et max :
rtt min/avg/max/mdev = 33.978/37.560/52.277/5.500 ms, ipg/ewma
200.289/37.388 ms

Evidemment, je ne sais pas faire ... je suis sûr que c'est le genre de
truc qui se fait en une petite ligne avec sed ou awk ... un bonne âme
pourrait-elle m'aider ?

--
Sylvain


--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to debian-user-french-REQUEST@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org

10 réponses

1 2
Avatar
pascal
pascal a écrit :
Sylvain A. a écrit :
Bonjour à tous,

Je n'ai jamais vraiment eu le temps de m'intéresser aux expressions
régulières,


Il faudrait peut-être chercher un peu...
mais aujourd'hui
comme c'est dimanche...
j'aurais besoin d'extraire de cette ligne
(résultat d'un ping) les trois variables min avg et max :
rtt min/avg/max/mdev = 33.978/37.560/52.277/5.500 ms, ipg/ewma
200.289/37.388 ms

Evidemment, je ne sais pas faire ... je suis sûr que c'est le genre de
truc qui se fait en une petite ligne avec sed ou awk ... un bonne âme
pourrait-elle m'aider ?



Là c'est franchement limite comme question.
Il n'y a même besoin d'expression régulière !
Allez zou sans réfléchir...
echo "rtt min/avg/max/mdev = 33.978/37.560/52.277/5.500 ms, ipg/ewma
200.289/37.388 ms " | cut -d" " -f4 | cut -d"/" -f1
donne min
-f2--> max et -f3-6--> avg.


^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Ooops erreur de frappe : il fallait lire -f3 ---> avg bien sûr.
P.


--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
pascal
Sylvain A. a écrit :
Bonjour à tous,

Je n'ai jamais vraiment eu le temps de m'intéresser aux expressions
régulières,


Il faudrait peut-être chercher un peu...
mais aujourd'hui
comme c'est dimanche...
j'aurais besoin d'extraire de cette ligne
(résultat d'un ping) les trois variables min avg et max :
rtt min/avg/max/mdev = 33.978/37.560/52.277/5.500 ms, ipg/ewma
200.289/37.388 ms

Evidemment, je ne sais pas faire ... je suis sûr que c'est le genre de
truc qui se fait en une petite ligne avec sed ou awk ... un bonne âme
pourrait-elle m'aider ?



Là c'est franchement limite comme question.
Il n'y a même besoin d'expression régulière !
Allez zou sans réfléchir...
echo "rtt min/avg/max/mdev = 33.978/37.560/52.277/5.500 ms, ipg/ewma
200.289/37.388 ms " | cut -d" " -f4 | cut -d"/" -f1
donne min
-f2--> max et -f3-6--> avg.
A +
Pascal


--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Txo
En ce dimanche 22 octobre 2006 à 11:54:14 pascal nous susurrait :

Allez zou sans réfléchir...
echo "rtt min/avg/max/mdev = 33.978/37.560/52.277/5.500 ms, ipg/ewma
200.289/37.388 ms " | cut -d" " -f4 | cut -d"/" -f1
donne min
-f2--> max et -f3-6--> avg.



Je peux témoigner que cela nécessite de réfléchir pour une majorit é de
personnes... ;-)

--
-+- Dominique Marin http://txodom.free.fr -+-
«Au commencement fut créé l'Univers. Cela mécontenta beaucoup de mo nde,
et fut largement considéré comme une mauvaise idée.»
-+- Douglas Adams in «Le Guide du Routard Galactique» -+-
Avatar
Sylvain A.
Salut,

Il faudrait peut-être chercher un peu...
mais aujourd'hui comme c'est dimanche...


Ok, c'est vrai ... promis, je m'y mets dès que j'en ai le temps ;-)
Là c'est franchement limite comme question.
Il n'y a même besoin d'expression régulière !
Allez zou sans réfléchir...
echo "rtt min/avg/max/mdev = 33.978/37.560/52.277/5.500 ms, ipg/ewma
200.289/37.388 ms " | cut -d" " -f4 | cut -d"/" -f1
donne min
-f2--> max et -f3-6--> avg


Je me doutais bien que ce n'était pas difficile, mais je n'avais pas la
moindre idée de comment faire ça. Je découvre du coup la commande "cut" ;-)
Merci beaucoup en tout cas !

--
Sylvain


--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Laurent FRANCOIS
Txo wrote:
En ce dimanche 22 octobre 2006 à 11:54:14 pascal nous susurrait :


Allez zou sans réfléchir...
echo "rtt min/avg/max/mdev = 33.978/37.560/52.277/5.500 ms, ipg/ewma
200.289/37.388 ms " | cut -d" " -f4 | cut -d"/" -f1
donne min
-f2--> max et -f3-6--> avg.




Je peux témoigner que cela nécessite de réfléchir pour une majo rité de
personnes... ;-)



Pareil pour moi, je connaissais pas cut et en plus j'ai réfléchi
et j'ai pas encore tout compris glupps....
Avatar
pascal
Laurent FRANCOIS a écrit :
Txo wrote:
En ce dimanche 22 octobre 2006 à 11:54:14 pascal nous susurrait :


Allez zou sans réfléchir...
echo "rtt min/avg/max/mdev = 33.978/37.560/52.277/5.500 ms, ipg/ewma
200.289/37.388 ms " | cut -d" " -f4 | cut -d"/" -f1
donne min
-f2--> max et -f3-6--> avg.




Je peux témoigner que cela nécessite de réfléchir pour une majorité de
personnes... ;-)



Pareil pour moi, je connaissais pas cut et en plus j'ai réfléchi
et j'ai pas encore tout compris glupps....




Bon alors le terme "réfléchir" était mal choisi...
Je voulais dire que ce genre de chose est assez basique tout de même et
qu'avec un peu de lecture on y arrive sans peine.
Par exemple:
http://www-inf.int-evry.fr/cours/UNIX/EnLigne/Cours/
Voilà.
P.


--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Marc Chantreux
> Bon alors le terme "réfléchir" était mal choisi...
Je voulais dire que ce genre de chose est assez basique tout de même et
qu'avec un peu de lecture on y arrive sans peine.



Oui ... et en lisant un peu plus loin, on se rend compte que le problème
n'est pas si basique que ca. Par exemple : la solution sera totalement
différente en fonction du volume de données a traiter.

Dans tous les cas, je crois lancer 2 fois cut n'était pas une bonne idée.

Voici 3 facons de faire ( 1 avec cut et 2 sans aucune commande externe )

> for f ( * ) { echo -e "nn$f ---------------n" ; cat $f ;echo ;
command time dash $f }


cut.sh ---------------

line='rtt min/avg/max/mdev = 33.978/37.560/52.277/5.500 ms, ipg/ewma
200.289/37.388 ms
' | cut -d" " -f4 | cut -d"/" -f1 > /dev/null

0.00user 0.00system 0:00.01elapsed 80%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (0major+461minor)pagefaults 0swaps


shellway2.sh ---------------

echo 'rtt min/avg/max/mdev = 33.978/37.560/52.277/5.500 ms, ipg/ewma
200.289/37.388 ms' |
while IFS=' ' read rtt names equals values rest; do
echo $values | while IFS='/' read mix avg max ; do
echo min $mix > /dev/null
done
done

0.00user 0.00system 0:00.00elapsed 83%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (0major+227minor)pagefaults 0swaps


shellway.sh ---------------

line='rtt min/avg/max/mdev = 33.978/37.560/52.277/5.500 ms, ipg/ewma
200.289/37.388 ms'
vire_prefix=${line%ms, *}
final=${vire_prefix#*=}
echo $final | while IFS='/' read mix avg max ; do
echo min $mix > /dev/null
done

0.00user 0.00system 0:00.00elapsed 75%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (0major+189minor)pagefaults 0swaps



--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
pascal
Marc Chantreux a écrit :

Bon alors le terme "réfléchir" était mal choisi...
Je voulais dire que ce genre de chose est assez basique tout de même et
qu'avec un peu de lecture on y arrive sans peine.



Oui ... et en lisant un peu plus loin, on se rend compte que le problème
n'est pas si basique que ca. Par exemple : la solution sera totalement
différente en fonction du volume de données a traiter.

Dans tous les cas, je crois lancer 2 fois cut n'était pas une bonne idée.

Voici 3 facons de faire ( 1 avec cut et 2 sans aucune commande externe )

for f ( * ) { echo -e "nn$f ---------------n" ; cat $f ;echo ;


command time dash $f }


cut.sh ---------------

line='rtt min/avg/max/mdev = 33.978/37.560/52.277/5.500 ms, ipg/ewma
200.289/37.388 ms
' | cut -d" " -f4 | cut -d"/" -f1 > /dev/null

0.00user 0.00system 0:00.01elapsed 80%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (0major+461minor)pagefaults 0swaps


shellway2.sh ---------------

echo 'rtt min/avg/max/mdev = 33.978/37.560/52.277/5.500 ms, ipg/ewma
200.289/37.388 ms' |
while IFS=' ' read rtt names equals values rest; do
echo $values | while IFS='/' read mix avg max ; do
echo min $mix > /dev/null
done
done

0.00user 0.00system 0:00.00elapsed 83%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (0major+227minor)pagefaults 0swaps


shellway.sh ---------------

line='rtt min/avg/max/mdev = 33.978/37.560/52.277/5.500 ms, ipg/ewma
200.289/37.388 ms'
vire_prefix=${line%ms, *}
final=${vire_prefix#*=}
echo $final | while IFS='/' read mix avg max ; do
echo min $mix > /dev/null
done

0.00user 0.00system 0:00.00elapsed 75%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (0major+189minor)pagefaults 0swaps





Oui bien sûr
Il faut être sérieux...
1°) on n'a pas parlé ici de volumes considérables de données...
2°) franchement ces considérations seront-elles pertinentes pour des
gens qui ignorent la commande "cut" (ceci dit sans aucun à-priori, il
faut bien commencer un jour...) ?
3°) j'ai bien précisé que je donnais UNE solution et en l'occurence la
première qui me venait à l'esprit. Que celle-ci ne soit pas optimale je
veux bien en convenir...Mais ça n'est pas trop le propos.
4°) en utilisant parot on devrait obtenir encore de bien meilleures perfs...

Trève de plaisanterie, ce que je faisais juste remarquer et qui reste
valable , c'est que sans trop de peine, on peut obtenir rapidement une
solution convenable (quoique non optimale) en ayant cherché un peu.
Ce que le Monsieur a admis du reste.

P.


--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Marc Chantreux
pascal wrote:

Oui bien sûr
Il faut être sérieux...



je suis :)

2°) franchement ces considérations seront-elles pertinentes pour des
gens qui ignorent la commande "cut" (ceci dit sans aucun à-priori, il
faut bien commencer un jour...) ?



je faisais part de ces remarques justement a cause de cela: je suis
souvent face a des gens qui utilisent tel ou tel filtre simplement par
habitude. Je crois qu'il est bon de montrer d'autres manières de faire
meme si ces dernières n'ont pas utilisées immédiatement.

3°) j'ai bien précisé que je donnais UNE solution et en l'occurence la
première qui me venait à l'esprit. Que celle-ci ne soit pas optimale je
veux bien en convenir...Mais ça n'est pas trop le propos.



je n'ai nullement remis en cause ta réponse, je ne faisais que tenter de
l'enrichir.

4°) en utilisant parot on devrait obtenir encore de bien meilleures perfs...



voui !!! oh voui !!!! ahhhh ..... ahhh .... L'attente est insoutenable
: j'utilise pugs depuis qq temps deja.


--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
rixed
-[ Mon, Oct 23, 2006 at 03:24:05PM +0200, Marc Chantreux ]----
Dans tous les cas, je crois lancer 2 fois cut n'était pas une bonne idée.



Ah bon ? Pourquoi ?

C'est le nombre de cut oubien le nombre de pipe qui t'inquiètes ?
Moi à vu de nez je pense que cut est beaucoup plus rapide que de
traiter les lignes en shell.

S'il y a une seule ligne à traiter, toutes les solutions se valent.
S'il y en a plein, voici ce que ça donne :

date; yes "rtt min/avg/max/mdev = 33.978/37.560/52.277/5.500 ms, ipg/ewma 200.289/37.388 ms" |
head -10000 |
while IFS=' ' read rtt names equals values rest; do echo $values |
while IFS='/' read mix avg max ; do echo $mix ; done;
done > /dev/null; date
Tue Oct 24 09:06:22 CEST 2006
Tue Oct 24 09:06:46 CEST 2006

Comparé à :

date; yes "rtt min/avg/max/mdev = 33.978/37.560/52.277/5.500 ms, ipg/ewma 200.289/37.388 ms" |
head -10000 |
cut -d" " -f4 |
cut -d"/" -f1 > /dev/null; date
Tue Oct 24 09:07:40 CEST 2006
Tue Oct 24 09:07:40 CEST 2006

C'est beaux, les pipes UNIX ! :-)



--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
1 2