Сортировка 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.
4 ответов:
ответ Чарли выше не работал для меня на 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убедитесь, что только поле2is используемый.
..и если кто-то следовал решению "сортировать", но теперь хочет получить больше, чем одну уникальную запись в строке (т. е. верхнее число уникальных записей X), после того, как вы отсортировали файл с помощью "сортировки", вы можете использовать небольшое приложение, которое я создал здесь:
https://github.com/danieliversen/MiscStuff/blob/master/scripts/findTopUniques.java
Comments