2010-12-01 7 views
15

je tentais pour trier un fichier avec des valeurs numériques comme ceci:Bash: numéros de tri avec les exposants

414e-05 
435e-05 
0.5361 
0.7278 
0.1341 
0.9592 
0.2664 

Avec trier tous les numers se triés sauf pour ceux avec l'exposant, est-il un moyen pour le tri fonction pour évaluer cette expression?

Répondre

28

Si votre version de la commande de tri est assez nouveau, il devrait soutenir la -g l'option (ou --Le-tri numérique) si vous aimez vos options longues). Il est décrit comme dans le manuel d'information:

Trier numériquement, en utilisant la fonction standard C strtod à convertir un préfixe de chaque ligne à virgule flottante double précision nombre . Cela permet de spécifier des nombres à virgule flottante dans la notation scientifique , comme '1.0e-34' et '10e100'.

+0

mais -g semble ne pas trier un mélange * * des nombres à virgule flottante et la notation scientifique. J'ai trié 8,25 et il met les deux premiers chiffres à la fin. – HongboZhu

+0

Oh, mon mauvais. J'ai un lieu européen. – HongboZhu

2

Si vous n'avez pas sort -g, une alternative est scisort.

+0

J'ai trier 8.23 ​​et l'option "g" ne fonctionne pas. @mob merci pour la solution. – boczniak767

3

 

perl -e 'print sort { $a<=>$b } <>' < input-file 
Questions connexes