Regex estendido ( -E
ou egrep
) não sabe sobre \d
. Use -P
como sugerido por @Alexander ou use -E
com [0-9]
ou [[:digit:]]
.
Adicione -o
para selecionar as correspondências apenas em vez de linhas inteiras correspondentes. Isso também dividirá as correspondências únicas em novas linhas.
grep -Eo '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+' myfile.txt
ou
grep -Eo '[[:digit:]]+\.[[:digit:]]+\.[[:digit:]]+\.[[:digit:]]+' myfile.txt
usando Perl Regex ( -P
ou pgrep
):
grep -Po '\d+\.\d+\.\d+\.\d+' myfile.txt
Se você alterar +
para *
, também poderá usar Regex básico :
grep -o '[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*' myfile.txt