Nombre reel sous unix

yannsar -  
 yannsar -
Bonjour...

comment montrer qu'un nombre est reel sous unix ? (de la forme x.x)
merci
A voir également:

6 réponses

asevere Messages postés 13522 Date d'inscription   Statut Webmaster Dernière intervention   426
 
Salut,

Il serait possible d'avoire des précisions ?
Dans quel contexte veux tu afficher un nombre réél ?

Par ce que je peux bien te dire d'ouvrir une console et de taper:
echo "2.5"
Mais je doute que ce soit ce que tu attends :)

@+
 ♫ Il suffirait de presque rien...
0
yannsar
 
g une variable toto=1.23

je pensais à un truc du genre :
echo $toto | grep ^[0-9]...

si il me sors un vide, c'est que c bon...s'il reste des lettres...alors c que c pas bon...

tu vois ?
0
asevere Messages postés 13522 Date d'inscription   Statut Webmaster Dernière intervention   426
 
Arf oki... je vois. :)


Ben t'es sur la bonne piste!
Sauf que grep analyse des "lignes", ce qui veut dire que soit la ligne corresspond et il l'affiche, soit elle ne correspond pas et il ne l'affiche pas, tu ne pourra pas avec grep sortir ce qu'il y a en trop dans la ligne.

Si c'est juste le fait de verifier qui t'interresse, c'est pas compliqué!
le echo $toto tu gardes.
L'expression reguliere pour un entier, c'est:
^[0-9]*\.[0-9]*$
commence par un ou plusieurs chiffres, ensuite un point '.' ensuite 0 ou plusieur chiffre puis la fin de la ligne.

Donc:
echo $toto | grep ^[0-9]*\.[0-9]*$

A ce niveau là, si le chiffre est renvoyé, c'est que c'est un réél. Si tu preferes avoir l'invers, l'option -v de grep s'en chargera.

Maintenant, si tu te moques d'avoir le chiffre affiché ou pas, mais que tu veux juste savoir ce qu'il en est, il faut juste renvoyer la sortie de grep, vers rien du tout >/dev/null puis afficherdeux chose diferretne en fonction du resultat de la commande :)
Ce qui donne au final:
echo $toto| grep ^[0-9]*\.[0-9]*$ >/dev/null&& echo "ok" \
|| echo "pas ok"

Voilà, ça devrait te donner le réusltat attendu!

Par contre, l'expression reguliere, n'es pas parfaite, loin de là (si toto=.) toto est consideré comme un réél, mais tu as assez d'aide dans les manuel de grep et regexp pour trouver comment parrer a ça!:)

@++
 ♫ Il suffirait de presque rien...
0
tafiscobar Messages postés 1281 Statut Contributeur 177
 
salut, je pense que cette expression réguliére devrait suffire :
 ^[0-9]*\.[0-9]+$  
car + indique l'existence au moins.

tafiscobar "lou waye def bopame"
la nullite n'existe pas, l'ignorance oui, ah je suppose!!!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
asevere Messages postés 13522 Date d'inscription   Statut Webmaster Dernière intervention   426
 
Bon en fait:
grep -E ^\.{1}[0-9]+$\|^[0-9]+(\.{1}[0-9]+)?$

Voilà comment tourner le grep pour avoir exactement ce qu'il faut :)
l'option -E est la pour pour dire que l'expression reguliere doit-être interprétée comme une expression réguliere étendue.
donc la le pattern match tout ce qui commence par zero ou plusieur digits, eventuellement suivi d'un point si ce point est suivi de 1 ou plusieur digits :o)
Pour le détail, l'experssion est compsée de 2 parties separées par un pipe (|) pour ne pas que ce soit ok si toto est vide.

@+
 ♫ Il suffirait de presque rien...
0
yannsar
 
Merci à tous...je teste demain !!!
0