Пример file.txt
:
100 foo
2 bar
300 tuu
При использовании sort -k 1,1 file.txt
порядок строк не изменится, хотя мы ожидаем:
2 bar
100 foo
300 tuu
Как отсортировать поле, состоящее из чисел, по абсолютному числовому значению?
Взгляните на страницу руководства для сортировки ...
-n, --numeric-sort compare according to string numerical value
Итак, вот пример ...
sort -n filename
-g, --general-numeric-sort
может быть более целесообразным. Это также позволяет использовать научную нотацию, например, 1.234E10 и т. Д.Если вы сортируете строки, состоящие из смешанного текста и чисел, например, имена файлов скользящих журналов, тогда сортировка с помощью
sort -n
не работает должным образом:В этом случае вариант
-V
подойдет:со страницы руководства:
источник
ls
сквозныхsed
подстановок для удаления букв и оставления только цифр, очевидно, цветной вывод также влиял на вещи. Так что бегls --color=never
тоже имел значение.-V
это именно то, что я искал. Я должен иметь привычку сначала просматривать справочные страницы.Что ж, большинство других ответов здесь относятся к
Однако я не уверен, что это работает для отрицательных чисел. Вот результаты, которые я получил с версией sort 6.10 в Fedora 9.
Входной файл:
Вывод:
Что, очевидно, не упорядочено по числовому значению.
Тогда я думаю, что более точным ответом будет использование,
sort -n
но только если все значения положительны.PS: Использование
sort -g
возвращает те же результаты для этого примераРедактировать:
Похоже, настройки локали влияют на то, как знак минус влияет на порядок ( см. Здесь ). Чтобы добиться хороших результатов, я просто сделал:
источник
Вы должны использовать опцию числовой сортировки:
источник
Используйте
sort -n
илиsort --numeric-sort
.источник
Вы должны выполнить следующую команду:
sort -n -k1 filename
Это должно сработать :)
источник
Используйте sort -nr для сортировки в порядке убывания. обращаться
Сортировать
См. Приведенную выше страницу руководства для получения дополнительной информации.
источник
источник