Encontré una buena manera de hacerlo. En mi sistema, las líneas de salida largas están salpicadas con "^ M" (espacio en blanco seguido de retorno de carro). La "^ M" se puede reemplazar muy bien con el carácter nulo "^ @", que no se muestra en absoluto cuando se captura el archivo.
También capturo el tiempo, así que para reproducir el archivo perfectamente, no puedo simplemente eliminar "^ M" completamente usando los comandos a continuación (porque scriptreplay cuenta bytes):
tr '\r' '\0' | sed 's/ \x0//g'
Ejecuto mi comando de script de esta manera:
script -t -f session.log 2>timing
Entonces, lo que hago después es:
cat session.log | tr '\r' '\0' > typescript
scriptreplay -t timing | sed 's/ \x0//g'
La primera edición (antes de la reproducción) retiene el número de bytes en el archivo. La segunda edición (después de la repetición) elimina el espacio en blanco en lugares aleatorios. (Tenga en cuenta que, de forma predeterminada, scriptreplay busca el archivo de entrada llamado "typecript", por lo que no lo proporcioné después de "timing").