Com sed
, você pode fazer:
ping 192.168.1.1 | sed -n 's/.*time=\([^ ]*\).*//p'
Isso simplesmente procura o trecho mais longo de não espaço após time=
, usa parênteses para capturá-lo para que possamos nos referir a ele como e apenas substitui tudo na linha pelo que foi capturado. O
-n
(não imprime por padrão) junto com o /p
(impressão, se isso funcionou) no final do operador de substituição, garantem que apenas imprimamos linhas relevantes.
Eu não usaria sed
para isso, outras ferramentas são mais simples aqui. Por exemplo:
-
grep
ping 192.168.1.1 | grep -Po 'time=\K\S+'
-
Perl
ping 192.168.1.1 | perl -lne '/time=(\S+)/ && print '
-
awk
ping 192.168.1.1 | awk -F'[= ]' '/time=/{print $(NF-1)}'