Я прочитал руководство по sort но чувствую, что что-то упустил.

Исходный файл

Вот файл CSV, который я пытаюсь отсортировать:

$ cat SAMPLE.CSV 
compid,active,tagno
-2147483646,1,"1"
-2147483645,0,"10000"
-2147483644,0,"1002"
-2147483127,1,"76245.1"
-2147483126,1,"76245.2"
-2147468087,1,"76245"

Желаемый результат

Я пытаюсь отсортировать по третьему (последнему) столбцу, также известному как столбец tagno . Желаемый результат должен выглядеть так:

compid,active,tagno
-2147483646,1,"1"
-2147483644,0,"1002"
-2147483645,0,"10000"
-2147468087,1,"76245"
-2147483127,1,"76245.1"
-2147483126,1,"76245.2"

Напрасные Попытки

Судя по всему, следующая команда должна делать именно то, что я хочу:

$ sort SAMPLE.CSV -n -k 3 -t ','
-2147468087,1,"76245"
-2147483126,1,"76245.2"
-2147483127,1,"76245.1"
-2147483644,0,"1002"
-2147483645,0,"10000"
-2147483646,1,"1"
compid,active,tagno

Я даже попытался с опцией "general-numeric-sort":

$ sort SAMPLE.CSV -g -k 3 -t ','
-2147468087,1,"76245"
-2147483126,1,"76245.2"
-2147483127,1,"76245.1"
-2147483644,0,"1002"
-2147483645,0,"10000"
-2147483646,1,"1"
compid,active,tagno

Это первый раз, когда я использую sort поэтому я чувствую, что мне здесь не хватает чего-то фундаментального.

sort версию

$ sort --version
2.3-Apple (99)

Помогите, пожалуйста?

1 ответ1

1

Разделитель полей по умолчанию в sort является непустым переходом к пустому. Здесь вам нужен другой разделитель: двойная кавычка.

sort -t'"' -k2n SAMPLE.CSV

Затем вы сортируете по второму столбцу. К счастью, второй столбец пуст в строке заголовка, поэтому он идет первым.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .