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



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



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


Если эта ситуация стала результатом "выбора", то "заказ" будет выглядеть следующим образом: порядок столбец2, столбец1, столбец3 - результат будет такой:



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


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

758   4  

4 ответов:

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

ответ Чарли выше не работал для меня на Cygwin (сортировка версии 2.0, GNU textutils), следующее:

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

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

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 is используемый.

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

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

Comments

    Ничего не найдено.