gnu sort / uniq: сортировка по количеству раз

526
719016

Как я могу использовать GNU sortи uniqиметь самые распространенные вхождения вместо числовой или буквенно-цифровой сортировки? Пример list.txt:

1 2 2 2 3 3 

Поскольку «2» встречается 3 раза, должно быть сверху, затем «3» и «1» следующим образом:

$ cat list.txt | "some sort/uniq magic combo" 2 3 1 
1

1 ответ на вопрос

4
Doug Harris

Как это:

cat list.txt | sort | uniq -c | sort -rn 

-cВключает в себя подсчет каждой уникальной линии, а затем вы сортировать по этим.

Если вы хотите удалить счетчик после сортировки, сделайте так:

cat list.txt | sort | uniq -c | sort -rn | awk '{ print $2; }' 
Я делал это целую вечность, и для задач среднего размера это работает хорошо. Однако время от времени я сталкиваюсь с гигабайтами данных журнала и выполняю сортировку, которая требует много дискового пространства для дублирующих строк, которые вы выбрасываете на следующем шаге. Есть лучшие алгоритмы, но я не знаю хороших простых инструментов командной строки для решения этой проблемы в более широком масштабе. mc0e 9 лет назад 0

Похожие вопросы