Isso é mais fácil de fazer com awk
do que grep
e sed
:
ip addr show eth0 | awk '/inet / {print $2}'
Se você quiser remover a máscara de rede do CIDR do IP:
ip addr show eth0 | awk '/inet / {gsub(/\/.*/,"",$2); print $2}'
Observe que uma interface pode ter mais de um endereço IP - por exemplo, ip addr show br0 | awk '/inet / {print $2}'
no meu sistema tem 11 endereços IPv4, sendo alguns deles endereços IP públicos e alguns deles endereços privados RFC1918.