Bash에 얼마나 많은 IP가 있는지 계산하는 방법은 무엇입니까?

Bash에 얼마나 많은 IP가 있는지 계산하는 방법은 무엇입니까?

Bash에 얼마나 많은 IP가 있는지 계산하는 방법을 아는 사람이 있습니까?

예: 명령:

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"

예를 들어 나는 얻는다

114.114.114.114
114.114.115.115
8.8.8.8
etc...

다음을 얻기 위해 특정 명령을 실행하고 싶습니다.

N IPs found in DNS

(N은 반환된 IP 수)

또한 이러한 IP를 여러 변수로 나누고 싶습니다.

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

이 작업을 수행하는 방법을 아는 사람이 있나요?

답변1

배열을 사용하여 결과를 얻고 배열 요소 수를 사용하여 N IPs found in DNS행을 표시할 수 있습니다. 배열을 반복하거나 배열의 특정 요소를 사용할 수도 있습니다.

#!/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]}"

답변2

IP를 계산하려면 |wc -l명령 끝에 추가하면 됩니다.

관련 정보