Как сортировать, uniq и строку отображения, которые появляются больше, чем X раз

У меня есть файл вроде этого:

80.13.178.2
80.13.178.2
80.13.178.2
80.13.178.2
80.13.178.1
80.13.178.3
80.13.178.3
80.13.178.3
80.13.178.4
80.13.178.4
80.13.178.7

Мне нужно отображать уникальные записи для повторяющейся строки (похожие на uniq -d), но только записи, которые встречаются больше, чем дважды (в два раза это пример, позволяющий определить нижний предел.)

Результат для этого примера должен быть таким, если вы ищете записи с тремя или более вхождениями:

80.13.178.2
80.13.178.3

Ответ 1

С чистым awk:

awk '{a[$0]++}END{for(i in a){if(a[i] > 2){print i}}}' a.txt 

Он выполняет итерацию по файлу и подсчитывает события каждого IP-адреса. В конце файла он выводит каждый IP-адрес, который встречается более чем в 2 раза.

Ответ 2

Подайте вывод с uniq -cd на awk

sort test.file | uniq -cd | awk -v limit=2 '$1 > limit{print $2}'