Bash: trier les nombres avec des exposants

j'essayais de trier un fichier avec des valeurs numériques comme ceci:

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

avec sort tous les nombres sont triés sauf ceux avec l'exposant, y a-t-il un moyen pour la fonction sort d'évaluer cette expression?

17
demandé sur Fungsten 2010-12-01 16:42:13

3 réponses

si votre version de la commande sort est assez nouvelle, elle devrait supporter -g (ou général---numérique-tri) si vous aimez vos options longues). Elle est décrite comme cela dans l'info manuel:

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

29
répondu unwind 2010-12-01 13:45:53

perl -e 'print sort { $a<=>$b } <>' < input-file
3
répondu mob 2010-12-01 16:53:18

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

2
répondu dogbane 2010-12-01 14:23:43