Listar o endereço IP original do host

0

Eu tenho o seguinte conteúdo no arquivo. Eu gostaria de imprimir o endereço IP que está sob o nome.

Server:     17.128.100.12
Address:    17.128.100.12#53
Name:   Testserver1
Address: 17.146.118.156
Server:     17.128.100.12
Address:    17.128.100.12#53
Name:   Testserver2
Address: 17.146.118.168
Server:     17.128.100.12
Address:    17.128.100.12#53
Name:   Testserver3
Address: 17.146.118.166

A saída deve se parecer com:

17.146.118.156
17.146.118.168
17.146.118.166
    
por Sai 10.02.2016 / 20:43

3 respostas

1
 grep ^Address my_file | grep -v "#" | awk '{print $2}'
    
por 10.02.2016 / 21:45
0

Você pode usar awk com isto:

 awk 'BEGIN {firstName=0;} /Name/ {firstName=1;} /Address/ {if(firstName) {print $NF}; firstName=0;}' <file>
    
por 10.02.2016 / 20:55
0
perl -0777 -e 'print join "\n", <> =~ m/Name.*?Address:\s*([\d.]+)/gms;'

Usa um regex de várias linhas para corresponder a 'dígitos e pontos', depois de um 'Endereço:' que é diretamente precedido (porque .*? não é remunerado) por nome

Lê isso de <> , que é o identificador de arquivo mágico - lê STDIN ou arquivos especificados, por exemplo,

perl -0777 -e 'print join "\n", <> =~ m/Name.*?Address:\s*([\d.]+)/gms;' somefile 

Como alternativa, defina o separador de registro como 'Nome':

perl -lne '$/="Name:"; /Address: ([\d\.]+)/ && print $1'

Por causa da falta de g , ele corresponde apenas à primeira vez em cada 'registro'.

    
por 10.02.2016 / 21:23

Tags