Usando grep
(graças à A.B. para a sugestão --line-buffered
):
dhcpdump -i eth0 | grep --line-buffered -Po ' *IP: .*?\(\K[^)]*'
dhcpdump -i eth0 | grep --line-buffered -Po ' *IP: .*\(\K[^)]*'
O primeiro extrairá o primeiro endereço, o segundo extrairá o último endereço;
Parâmetros do grep
comando # 1:
-
*
: corresponde a qualquer número decaracteres
-
IP:
: corresponde a umaIP:
string -
.*?
: corresponde qualquer número de qualquer caractere preguiçosamente -
\(
: corresponde a um caractere(
-
\K
: descarta a correspondência anterior -
[^)]*
: corresponde a qualquer número de qualquer caractere que não seja)
preguiçoso
% de colapso do comandogrep
# 2:
-
*
: corresponde a qualquer número decaracteres
-
IP:
: corresponde a umaIP:
string -
.*
: corresponde qualquer número de qualquer caractere avidamente -
\(
: corresponde a um caractere(
-
\K
: descarta a correspondência anterior -
[^)]*
: corresponde a qualquer número de qualquer caractere que não seja)
preguiçoso
Exemplo de saída:
user@debian ~ % echo "IP: 0.0.0.0 (xx:xx:xx:xx:xx:xx) > 255.255.255.255 (ff:ff:ff:ff:ff:ff)" | grep -Po ' *IP: .*?\(\K[^)]*'
xx:xx:xx:xx:xx:xx
user@debian ~ % echo "IP: 0.0.0.0 (xx:xx:xx:xx:xx:xx) > 255.255.255.255 (ff:ff:ff:ff:ff:ff)" | grep -Po ' *IP: .*\(\K[^)]*'
ff:ff:ff:ff:ff:ff