Вопрос по unix, bash, ubuntu, linux, sorting – Сортировка Linux не работает с отрицательными числами с плавающей точкой

10

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

<code>0.00159265291648695254
-0.00318530179313823899
0
0.00999983333416666468
0.00362937767285478371
0.00477794259012844049
-0.00637057126765263261
0.00681464007477014026
-0.00840724736714870645
-0.00522201549675090458
</code>

Илиsort -n data а такжеsort -g data Прокуд это

<code>0
0.00159265291648695254
-0.00318530179313823899
0.00362937767285478371
0.00477794259012844049
-0.00522201549675090458
-0.00637057126765263261
0.00681464007477014026
-0.00840724736714870645
0.00999983333416666468
</code>

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

Я тоже бегу 11.10. Мой вид дает ваш точный выводwithout any parameters с помощью/usr/bin/sort но оба-g а также-n Работа. Joachim Isaksson
пожалуйстаtype sort kev
хорошо, что это странно, я использую, а также Ubuntu (Ubuntu 11.10) tsusanka
sort --version zwol
Какой у вас вкус UNIX? Мой Ubuntu сортирует просто отлично, используя оба-g а также-n. Joachim Isaksson

Ваш Ответ

2   ответа
22

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

$ echo $LANG
cs_CZ.UTF-8

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

Следовательно:

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

Если вы пишете сценарий bash, настройте процедуру сортировки на использование & quot; normal & quot; Настройки.

export LC_ALL=C
2

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

$ 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.
моя версия еще новее, так странно tsusanka
спасибо за ваш комментарий, смотрите мой ответ, если интересно tsusanka

Похожие вопросы