sed usa Basic Regular Expressions por padrão e BREs não sabe sobre \d . Aqui estão algumas outras abordagens:
-
sedsed -r 's/.* ([0-9]+\.*[0-9]*).*?//' logfile.txt > outfile.txtO
-ré necessário para evitar a fuga dos parênteses. -
perlperl -pe 's/.* (\d+\.*\d*).*/$1/' logfile.txt > outfile.txt -
grepgrep -Po '.* \K\d+\.*\d*' logfile.txt > outfile.txt
Todos eles usam sua abordagem básica, que preenche os todos conjuntos de dígitos na linha que são precedidos por um espaço. Dependendo de quantos conjuntos de números podem aparecer na linha, se as linhas de entrada forem sempre do formato que você mostra, uma abordagem mais segura seria:
grep -Po 'took \K\d+\.*\d*' logfile.txt