Aqui estão alguns oneliners .....
Awk
ifconfig eth0 | awk '/inet addr/{split(,a,":"); print a[2]}'
A função split no comando awk acima divide a segunda coluna com base no delimitador :
e armazena o valor dividido em uma matriz associativa a
. Então a[2]
contém o valor da segunda parte.
sed
ifconfig eth0 | sed -n '/inet addr/s/.*inet addr: *\([^[:space:]]\+\).*//p'
No sed básico, \(...\)
denomina grupo de captura que é usado para capturar os caracteres. Poderíamos referenciar esses caracteres capturados por meio de back-referencing. \([^[:space:]]\+\)
captura qualquer caractere, mas não o espaço uma ou mais vezes.
grep
ifconfig eth0 | grep -oP 'inet addr:\K\S+'
\K
descarta que os caracteres correspondidos anteriormente sejam impressos no final e \S+
corresponde a um ou mais caracteres não espaciais.
Perl
ifconfig eth0 | perl -lane 'print if /inet addr:(\S+)/'
Um ou mais caracteres não espaciais que estão ao lado da string inet addr:
são capturados e, finalmente, imprimimos apenas esses caracteres capturados.