Como de costume, quando esse comportamento é observado (sem saída ou saída atrasada), isso ocorre devido ao buffer de pipeline. Seu comando funciona aqui se você instruir sed
a ser "unbuffered" com o sinalizador -u
.
Você pode alterar o comportamento de buffer de programas individuais com o programa stdbuf
de coreutils
, por exemplo, para usar o buffer de linha:
stdbuf -oL sed '...'
A propósito, se a sua versão de grep
suportar expressões regulares Perl, você poderá obter o mesmo efeito com um padrão lookahead, por exemplo:
grep --line-buffered -oP '[0-9.]+(?= ms)'