Tudo bem, acho que isso pode funcionar para você - supondo que você tenha o awk instalado e os endereços IP em ip.txt:
cat ip.txt | awk 'BEGIN { FS = "." } ; { printf("%s.%s.%s\n%s.%s.%s.%s\n", $1, $2, $3, $1, $2, $3, $4) }' | sort | uniq -c | sort -rn
Uma pequena explicação:
- cat imprime o arquivo
- O awk divide os endereços IP em 4 variáveis e imprime os intervalos de 24/32 e / 32
- classifica os endereços IP, então podemos contá-los
- o uniq conta-os (graças à opção -c) e coloca a frequência na frente do endereço ip
- classifica-os em ordem decrescente (-r) da contagem de frequência (-n interpreta valores em vez de string)
Observe que os intervalos / 32 e / 24 são exibidos. Se você quiser apenas o / 32 do intervalo / 24, ajuste a instrução printf (assim, printf("%s.%s.%sn", $1, $2, $3)
somente imprime / 24 e printf("%s.%s.%s.%s\n", $1, $2, $3, $4)
imprime apenas / 32.