Eu encontrei uma boa maneira de fazê-lo. No meu sistema, linhas de saída longas são salpicadas com "^ M" (espaço em branco seguido de retorno de carro). O "^ M" pode ser bem substituído pelo caractere nulo "^ @", que não é exibido quando você cria o arquivo.
Também capturo o tempo, portanto, para reproduzir o arquivo perfeitamente, não posso simplesmente remover "^ M" completamente usando os comandos abaixo (porque o scriptreplay conta bytes):
tr '\r' '\0' | sed 's/ \x0//g'
Eu executo meu comando de script assim:
script -t -f session.log 2>timing
Então, o que eu faço depois é:
cat session.log | tr '\r' '\0' > typescript
scriptreplay -t timing | sed 's/ \x0//g'
A primeira edição (antes da reprodução) mantém o número de bytes no arquivo. A segunda edição (após a reprodução) se livra do espaço em branco em lugares aleatórios. (Observe que, por padrão, o scriptreplay procura o arquivo de entrada chamado "typescript", motivo pelo qual não o forneci após o "tempo".)