[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Expression régulière




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 "\n\n$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




Reply to: