Como contar quantos ip no bash?

1

Alguém sabe como contar quantos ip no bash?

Por exemplo: Comando:

root@ubuntu:~$ dig www.google.com A +short | grep -oE "\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b"

e por exemplo eu recebo

114.114.114.114
114.114.115.115
8.8.8.8
etc...

e eu quero executar um comando específico para obter:

N IPs found in DNS

(N é o número de IPs encontrados no retorno)

também quero dividir esses IPs para diferentes variáveis:

$a="114.114.114.114"
$b="115.115.115.115"
$c="8.8.8.8"
$N="x.x.x.x"

Alguém sabe como fazer isso?

    
por WangTongze 30.09.2015 / 15:32

2 respostas

5

Você pode usar uma matriz para buscar os resultados e usar o número de elementos da matriz para exibir a linha N IPs found in DNS . Também é possível iterar pelo array ou usar elementos específicos do array:

#!/bin/bash

myarray=( $(dig www.google.com A +short | grep -oE "\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b" ) )
echo "${#myarray[@]} IPs found in DNS"

for IP in ${myarray[@]}
do
    echo IP: $IP
done

echo "The third entry found in DNS is: ${myarray[2]}"
    
por 30.09.2015 / 15:55
2

Para contar os IPs, basta adicionar |wc -l no final do seu comando.

    
por 30.09.2015 / 15:56