Usando sed
Por padrão, sed lê entrada separada por nova linha. Este comando removerá tudo antes do último \r em uma linha:
sed 's/.*\r//'
Por exemplo:
$ echo $'line1\n\hi\rhello\rworld' | sed 's/.*\r//'
line1
world
Para usar isso com tee , podemos usar substituição de processo :
echo $'line1\n\hi\rhello\rworld' | tee >(sed 's/.*\r//' >Outfile)
No bash, o construtor >(...) é chamado de substituição de processo . Ele executa os comandos nos parênteses e os coloca em um objeto semelhante a um arquivo. tee escreve no objeto tipo arquivo e os comandos processam a entrada.
Usando o awk
Da mesma forma, isso remove tudo antes do último \r em uma linha separada por nova linha:
awk -F'\r' '{print $NF}'
A opção -F'\r' define o separador de campo como um retorno de carro. Consequentemente, só queremos imprimir o último campo, $NF , em cada linha separada por nova linha. Assim, print $NF .
Por exemplo:
$ echo $'line1\n\hi\rhello\rworld' | awk -F'\r' '{print $NF}'
line1
world
Para usar isso com tee :
echo $'line1\n\hi\rhello\rworld' | tee >(awk -F'\r' '{print $NF}' >Outfile)