A saída de tr é armazenada em buffer. Você pode usar stdbuf -o0 com tr para deixar o STDOUT sem buffer:
cdrecord -v ... | stdbuf -o0 tr '\r' '\n' | grep -i written
Eu gostaria de analisar a saída do cdrecord / wodim usando o grep. cdrecord -v gera linhas como
Track 01: 49 of 75 MB written (fifo 100%) [buf 100%] 10.2x.
O problema é que o cdrecord usa retornos de carro ( CR , \r ) para mostrar o progresso na mesma linha.
Eu tentei anexar tr '\r' '\n' à chamada do cdrecord, que geralmente funciona, mas a saída não será mostrada linha por linha. Em vez disso, grandes blocos de texto são analisados e exibidos:
cdrecord -v ... | tr '\r' '\n' | grep -i written
Isso se deve ao cdrecord, tr ou grep? Existe alguma maneira de forçar a descarga para obter a saída linha por linha?
Qualquer ajuda apreciada.