Tutti questi problemi hanno causato le mie impostazioni locali. Il mio Ubuntu è in ceco:
$ echo $LANG
cs_CZ.UTF-8
In questa impostazione locale non è un punto decimale, piuttosto una virgola decimale che separa il numero intero dal resto (come pensavamo nelle lezioni di matematica, nella nostra lingua scriviamo davvero la virgola invece del punto).
Pertanto:
echo '0,03 >> 0,4 >
> -0,3 >
> 0' | sort -n
> 0
> -0,3 >
> 0,4 >
0,03 >
Se stai scrivendo uno script bash, imposta la routine di ordinamento in modo che utilizzi le impostazioni "normali".
export LC_ALL=C
Il problema potrebbe essere nel tuo comando di ordinamento. Se eseguo lo stesso, il risultato è quello previsto:
$ echo '0.00159265291648695254
> -0.00318530179313823899
> 0
> 0.00999983333416666468
> 0.00362937767285478371
> 0.00477794259012844049
> -0.00637057126765263261
> 0.00681464007477014026
> -0.00840724736714870645
> -0.00522201549675090458' | sort -n
-0.00840724736714870645
-0.00637057126765263261
-0.00522201549675090458
-0.00318530179313823899
0
0.00159265291648695254
0.00362937767285478371
0.00477794259012844049
0.00681464007477014026
0.00999983333416666468
Dovresti usare GNU sort se non lo usi
sort (GNU coreutils) 5.93
Copyright (C) 2005 Free Software Foundation, Inc.
This is free software. You may redistribute copies of it under the terms of
the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
There is NO WARRANTY, to the extent permitted by law.
Written by Mike Haertel and Paul Eggert.