3

Как я могу выбрать ips, который появлялся 4 раза или больше, например, здесь?

входной файл

192.168.1.28
192.168.1.100
192.168.1.31
192.168.101.2
192.168.1.31
192.168.11.02
192.168.1.31
192.168.1.28
192.168.1.28
192.168.1.31
192.168.21.31
192.168.1.28
192.168.1.31

и тогда я хотел бы получить этот вывод:

192.168.1.28
192.168.1.31  

ИСПОЛЬЗОВАНИЕ AWK является предпочтительным

Спасибо вам всем! :)

3 ответа3

5

Если вы комбинируете ответ Николь Гамильтон и gawk вы получаете (для строк, которые появляются 4 раза и более):

sort iplist.txt | uniq -c | gawk '$1>=4{print $2}' 

Для ровно четыре раза сделать:

sort iplist.txt | uniq -c | gawk '$1==4{print $2}' 

Измените 4 на любой интересующий вас номер.

4

Давайте предположим, что список в файле с именем iplist.txt . Попробуй это:

sort iplist.txt | uniq -d

Вот как это выглядит при запуске. Я намеренно добавил третье вхождение IP-адреса 192.168.1.28 чтобы вы могли видеть, что только строки, встречающиеся 2 или более раз, отображаются в выходных данных, причем каждая дублированная строка отображается только один раз.

bash-4.1$ cat iplist.txt
192.168.1.28
192.168.1.100
192.168.1.31
192.168.101.2
192.168.11.02
192.168.1.31
192.168.21.31
192.168.1.28
192.168.1.28
bash-4.1$ sort iplist.txt | uniq -d
192.168.1.28
192.168.1.31
bash-4.1$
1

Для 4 или более раз попробуйте:

awk '++A[$1]==4' file

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .