Filtrando a saída do ifconfig

0

Estou tentando selecionar os primeiros 3 octetos do IP IPv4 do ifconfig. Como eu iria fazer isso? Eu só não consigo descobrir como selecionar a partir deste passo

[root@hostname ~]# ifconfig | grep "inet addr:"  | grep -v "127.0.0.1" | awk '{print $2}'

Saída:

addr:10.20.1.3

O que eu quero é 10.20.1 para o resultado final

    
por CasMz 06.07.2017 / 01:48

3 respostas

0

Supondo que você esteja procurando o endereço IP de eth0 , isso deve ser feito:

ifconfig | grep -A1 eth0 | grep "inet addr" | sed 's/inet addr://' | awk '{ print $1 }' | sed 's/\.[0-9]*$//'
    
por 06.07.2017 / 02:08
0

Usando apenas o awk, para todas as interfaces:

ifconfig | awk '/Link encap/{eth=$1} ; /inet addr/{sub(/addr:/, "", $2) ; sub(/\.[0-9]*$/,"",$2) ; addr=$2 ; print eth, addr)'

Resultados:

eth0 192.168.0
lo 127.0.0
    
por 06.07.2017 / 02:53
0

Eu nem me incomodaria em usar sed para o endereço real. É mais transparente (e mais fácil de acertar) usar cut para isso!

Adicione | sed -e 's/inet_addr://' | cut -d. -f 1-3 ao final do seu comando original:

ifconfig | grep "inet addr:"  | grep -v "127.0.0.1" | awk '{print $2}' | sed -e 's/inet_addr://' | cut -d. -f 1-3  

Ou use apenas cut em vez de awk :

ifconfig | grep "inet addr:"  | grep -v "127.0.0.1" | cut -w -f 2 | sed -e 's/inet_addr://' | cut -d. -f 1-3  
    
por 12.07.2017 / 01:17

Tags