mostre os itens que apareceram 2 vezes ou mais

3

Como posso selecionar os ips que apareceram 4 vezes ou mais, por exemplo, aqui?

o arquivo de entrada é

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

e depois gostaria de obter esta saída:

192.168.1.28
192.168.1.31  

USAR O AWK é o preferido

obrigada a todos! :)

    
por Arash 10.03.2013 / 21:21

3 respostas

5

Se você combinar a resposta de Nicole Hamilton e gawk você recebe (para linhas que aparecem 4 vezes ou mais):

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

Por exatamente quatro vezes:

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

Altere o 4 para o número do seu interesse.

    
por 10.03.2013 / 22:21
4

Vamos supor a lista em um arquivo chamado iplist.txt . Tente isto:

sort iplist.txt | uniq -d

Aqui está o que parece quando você o executa. Eu adicionei deliberadamente uma terceira ocorrência do endereço IP 192.168.1.28 para que você possa ver que apenas as linhas que ocorrem em 2 ou mais vezes são listadas na saída, com cada linha duplicada exibida apenas uma vez.

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$
    
por 10.03.2013 / 21:23
1

Por 4 vezes ou mais, tente:

awk '++A[$1]==4' file
    
por 11.03.2013 / 02:14