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]*$//'
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
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]*$//'
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
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