¿Eliminar caracteres no imprimibles de los registros de espera?

8

¿Cómo puedo quitar las siguientes secuencias de caracteres de mis archivos? ^[[64;8H¿, etc. ^[[?25h, ^[[1;64ro evitar tener que esperar agregarlos en primer lugar?

Antecedentes:

Estoy usando una colección de secuencias de comandos de esperar para ciertas tareas.

Los archivos de salida que estoy recopilando a menudo contienen el tipo de caracteres anterior (como se muestra en emacs / vi / cat -v). He intentado varios comandos tr como los siguientes, pero solo hace que el [64; 8H, etc., sea visible.

tr -dc '[:print:]\n' < input

EDITAR:

Los resultados de arriba en una línea problemática

[1;64r[64;1H[64;1H[2K[64;1H[?25h[64;1H[64;.....
Tim Brigham
fuente

Respuestas:

6

Estabas cerca Usted quiere

tr -dc '[:print:]\n' <input

Desde la tr(1)página del manual:

-c, -C, --complemento
utiliza el complemento de SET1

Actualizar

Si desea eliminar también las secuencias de escape, puede usar el siguiente sedfragmento:

sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g"

Está tomado de una pregunta por defecto del servidor llamada En CentOS 4.4, ¿cómo puedo quitar secuencias de escape de un archivo de texto?

Joseph R.
fuente
Gracias Joseph Eso hace que los personajes sean visibles pero no los despoja. Mostraré los resultados en el cuerpo de la pregunta.
Tim Brigham
@TimBrigham ¿Ayuda la actualización?
Joseph R.
1

Después de experimentar un poco (uso la concha de pescado, que colorea todo):

perl -pe '
    s/\033\\\\\[(\d+;)*\d*[[:alpha:]]//g;
    s/\033\\\\\]0;//g;
    s/\x7//g;
    s/\033\(B//g;
' expect.log
Glenn Jackman
fuente