Тип Linux не работает с отрицательными номерами с плавающей запятой

Как отсортировать этот тип ввода?

0.00159265291648695254
-0.00318530179313823899
0
0.00999983333416666468
0.00362937767285478371
0.00477794259012844049
-0.00637057126765263261
0.00681464007477014026
-0.00840724736714870645
-0.00522201549675090458

Либо sort -n data и sort -g data объявляет следующее:

0
0.00159265291648695254
-0.00318530179313823899
0.00362937767285478371
0.00477794259012844049
-0.00522201549675090458
-0.00637057126765263261
0.00681464007477014026
-0.00840724736714870645
0.00999983333416666468

С другой стороны, -1.whatever будет перед нолем. Мне нужен вид, чтобы заметить знаки минуса. Спасибо.

Ответ 1

Все эти проблемы сделали мои локальные настройки. Мой ubuntu находится на чешском языке:

$ echo $LANG
cs_CZ.UTF-8

В этом локальном параметре это не десятичная точка, а десятичная запятая, которая отделяет целое от остальных (как мы думали в математических классах, на нашем языке мы действительно записываем запятую вместо точки).

Таким образом:

echo '0,03 >> 0,4 >
> -0,3 >
> 0' | sort -n
> 0
> -0,3 >
> 0,4 >
0,03 >

Если вы пишете bash script, установите для процедуры сортировки обычные настройки.

export LC_ALL=C

Ответ 2

Проблема может быть в вашей команде sort. Если я запустил то же самое, мой результат будет таким, как ожидалось:

$ 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

Вы можете использовать сортировку GNU, если не используете ее

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.