Acho que isso faz o que você está pedindo. Chicoteado em 3 minutos.
wget -q https://www.privateinternetaccess.com/pages/network/ -O - | grep -E -o '>[^.]+\.privateinternetaccess\.com<' | tr -d '[<>]' | while read host ;do host $host ;done | awk '{print $NF}' | sort -u > ip_list
Assim, buscamos a página da Web com todos os nomes de host com wget e a enviamos para STDOUT, ao mesmo tempo em que suprimimos os relatórios de atividades do wget.
wget -q https://www.privateinternetaccess.com/pages/network/ -O -
Nós fazemos grep para os nomes de host na saída.
grep -E -o '>[^.]+\.privateinternetaccess\.com<'
Em seguida, use tr para remover os anseios angulares dos nomes de host.
tr -d '[<>]'
Em seguida, fazemos um loop pelos nomes de host com um laço while enquanto os resolvemos.
while read host ;do host $host ;done
A vantagem de usar o host ao pingar o nome é que você obterá todos eles, sem obter duplicatas.
A saída da resolução de nomes é limpa com o awk e, em seguida, classificada de forma única, não que eu ache que haveria duplicatas e gravar os resultados no arquivo ip_list .
awk '{print $NF}' | sort -u > ip_list
Caso você queira saber o que o awk faz: ele imprime o último campo de cada linha.