sed
usa Basic Regular Expressions por padrão e BREs não sabe sobre \d
. Aqui estão algumas outras abordagens:
-
sed
sed -r 's/.* ([0-9]+\.*[0-9]*).*?//' logfile.txt > outfile.txt
O
-r
é necessário para evitar a fuga dos parênteses. -
perl
perl -pe 's/.* (\d+\.*\d*).*/$1/' logfile.txt > outfile.txt
-
grep
grep -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