GNU/Linux >> Znalost Linux >  >> Linux

Linuxové řazení nefunguje se zápornými plovoucími čísly

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.

Linux
  1. Zahrajte si zábavnou matematickou hru s příkazy Linuxu

  2. Třídit příkaz v Linuxu s příklady

  3. Jak najít velké soubory linux pomocí příkazů find a du

  1. Jak pracovat s SFTP klientem v Linuxu – 10 příkazů sftp

  2. Jak pracovat s uživateli a skupinami v Linuxu

  3. Práce se soubory ZIP v Linuxu

  1. Instalace dockeru na Linux Mint 19.2 nefunguje

  2. proč linux bridge nefunguje

  3. Proč nemohou uživatelská jména Linuxu začínat čísly?