Вопрос

Я пытаюсь сортировать стол, основанную на первом значении от наименьшего до самой большой с помощью команды GNU-COREUTILS.

Мой стол выглядит что-то подобное:

file.txt.

100,0.8,0.323, ... some more data
2,0.323,0,323, ...
4, ...
53, ...
.
.
121, ...

Я попытался сделать следующее:

sort -n -k 1 file.txt

Но я получаю такие вещи, как ...

10,0,10,10
100,9,1,10
101,9,2,11
102,9,3,12
103,9,4,13
104,9,5,14
105,9,6,15
106,9,7,16
107,9,8,17
108,9,9,18
21,1,10,11
32,2,10,12
43,3,10,13
54,4,10,14

Я хочу логический численный порядок.

Тед.

Это было полезно?

Решение

Правильный вызов sort может выглядеть как

$ sort -n -t , -k 1,1 file.txt

Объяснение:

  • -n сортировать численно
  • -t , запятая сепаратор поля
  • -k 1,1 Сортировать на первом поле
  • file.txt входной файл

Призывая к вышеуказанной программе дает

10,0,10,10
21,1,10,11
32,2,10,12
43,3,10,13
54,4,10,14
100,9,1,10
101,9,2,11
102,9,3,12
103,9,4,13
104,9,5,14
105,9,6,15
106,9,7,16
107,9,8,17
108,9,9,18

При сортировке по полям очень удобно использовать --debug Вариант, просто чтобы убедиться, что это сортировка работает как ожидалось.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top