Почему сортировка Linux не дает мне желаемых результатов?

StackOverflow https://stackoverflow.com/questions/1802388

  •  05-07-2019
  •  | 
  •  

Вопрос

У меня есть файл a.csv с содержимым, похожим на приведенное ниже

a,b,c
a  ,aa,  a
a b, c, f
a , b, c
a b a b a,a,a
a,a,a
a aa ,a , t

Я пытаюсь отсортировать его с помощью sort -k1 -t, a.csv Но это дает следующие результаты

a,a,a
a  ,aa,  a
a aa ,a , t
a b a b a,a,a
a , b, c
a,b,c
a b, c, f

Что не является фактической сортировкой по 1-му столбцу.Что я делаю не так?

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

Решение

Вы также должны указать конечную позицию равной 1:

sort -k1,1 -t, a.csv

Другие советы

Попробуйте это сделать: sort -t, -k1,1 a.csv

Мужчина предполагает, что, опустив поле end, он произведет сортировку по всем символам, начинающимся с field n до конца очереди:

-k POS1[,POS2]'
     The recommended, POSIX, option for specifying a sort field.  The
     field consists of the part of the line between POS1 and POS2 (or
     the end of the line, if POS2 is omitted), _inclusive_.  Fields and
     character positions are numbered starting with 1.  So to sort on
     the second field, you'd use `-k 2,2' See below for more examples.

Попробуйте это вместо этого:

sort -k 1,1 -t , a.csv

сортировать чтения -k 1 как "сортировать начиная с первого поля и далее" - таким образом, фактически игнорируется смысл передачи аргумента в первую очередь.

Это задокументировано в сортировка справочной страницы и предупреждался об этом в разделе Примеров:

Выполните числовую сортировку по второму полю и разрешите связи путем сортировки в алфавитном порядке по третьему и четвертому символам пятого поля.Используйте `:' в качестве разделителя полей:

$ sort -t : -k 2,2n -k 5.3,5.4

Обратите внимание, что если бы вы написали -k 2 вместо вместо -k 2,2, sort использовал бы все символы, начинающиеся во втором поле и продолжающиеся до конца строки в качестве основного числовой Клавиша.Для подавляющего большинства приложений обработка клавиш, охватывающих более одного поля, как числовых, не приведет к тому, чего вы ожидаете.

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