Подтвердить что ты не робот

Сортировка CSV файла по приоритету столбца с помощью команды сортировки

У меня есть файл csv, и я хотел бы отсортировать его по приоритету столбца, например, "order by". Например:

3;1;2
1;3;2
1;2;3
2;3;1
2;1;3
3;2;1

Если эта ситуация была результатом "select", "order by" будет выглядеть следующим образом: order by column2, column1, column3 - результатом будет:

2;1;3
3;1;2
1;2;3
3;2;1
1;3;2
2;3;1

Я хотел бы знать, как получить этот же результат, используя команду sort для Unix.

4b9b3361

Ответ 1

sort --field-separator=';' --key=2,1,3

Ответ 2

Ответ Charlie выше не работал у меня на Cygwin (sort version 2.0, GNU textutils), следующее:

sort -t"," -k2 -k1 -k1

Ответ 3

Предположим, что у вас есть еще одна строка 3;10;3 в вашем файле unsorted.csv. Тогда, я думаю, вы ожидаете численный результат:

2;1;3
3;1;2
1;2;3
3;2;1
1;3;2
2;3;1
3;10;3

а не в алфавитном порядке:

2;1;3
3;1;2
3;10;3
1;2;3
3;2;1
1;3;2
2;3;1

Чтобы получить это, вы должны использовать -n:

sort --field-separator=';' -n -k 2,2 -k 1,1 -k 3,3 unsorted.csv

Следует отметить, что 2,2 необходимо использовать. Если используется только 2, то sort берет строку от начала поля 2 до конца. 2,2 гарантирует, что используется только поле 2.

Ответ 4

.., и если кто-то последует за решением "sort", но теперь хочет получить больше, чем единственная уникальная запись в строке (то есть верхний номер X уникальных записей), как только вы отсортировали файл, используя "sort", вы можете использовать небольшое приложение, которое я создал здесь:

https://github.com/danieliversen/MiscStuff/blob/master/scripts/findTopUniques.java