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)