Usando grep
ifconfig | grep -oP '(?<=inet addr:)[\d.]+'
Isso usa expressões regulares no estilo Perl do grep para selecionar o endereço IP que segue a string inet
.
Então, para salvar isso em uma variável, basta colocar os dois comandos dentro de $()
:
output=$(ifconfig | grep -oP '(?<=inet addr:)[\d.]+')
O acima irá salvar os endereços IP para todas as interfaces ativas em seu sistema. Se você quiser apenas salvar a saída para uma interface, diga eth0
e use:
output=$(ifconfig eth0 | grep -oP '(?<=inet addr:)[\d.]+')
Usando awk
ifconfig eth0 | awk -F'[ :]+' '/inet /{print }'
/inet /
seleciona linhas que contêm inet
. Nessas linhas, o terceiro campo é impresso onde um separador de campo é uma combinação de espaços ou dois pontos.
Usando sed
ifconfig eth0 | sed -En 's/.*inet addr:([[:digit:].]+).*//p'
ifconfig
alternativo
Existe outra versão de ifconfig
que produz saída como inet 1.2.3.4
em vez de inet addr:1.2.3.4
. Para essa versão, tente:
ifconfig | grep -oP '(?<=inet )[\d.]+'
Ou:
ifconfig eth0 | awk '/inet /{print }'
Ou use este comando sed que funciona com qualquer versão de ifconfig
:
ifconfig eth0 | sed -En 's/.*inet (addr:)?([[:digit:].]+).*//p'