Všechny tyto problémy způsobily moje místní nastavení. Moje ubuntu je v češtině:
$ echo $LANG
cs_CZ.UTF-8
V tomto místním nastavení to není desetinná čárka, ale desetinná čárka, která odděluje celé číslo od zbytku (jak jsme si mysleli v hodinách matematiky, v našem jazyce opravdu píšeme čárku místo tečky).
Proto:
echo '0,03 >> 0,4 >
> -0,3 >
> 0' | sort -n
> 0
> -0,3 >
> 0,4 >
0,03 >
Pokud píšete bash skript, nastavte rutinu řazení tak, aby používala "normální" nastavení.
export LC_ALL=C
Problém může být v příkazu řazení. Pokud spustím totéž, výsledek je očekávaný:
$ 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
Pokud jej nepoužíváte, měli byste použít GNU sort
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.