Removendo caracteres não imprimíveis de logs esperados?

8

Como eu posso remover as sequências de caracteres a seguir dos meus arquivos? ^[[64;8H , ^[[?25h , ^[[1;64r etc ou evitar ter que adicioná-los em primeiro lugar?

Antecedentes:

Estou usando uma coleção de scripts esperados para determinadas tarefas.

Os arquivos de saída que estou coletando geralmente contêm o tipo de caractere acima (conforme exibido em emacs / vi / cat -v). Eu tentei um número de comandos tr como o seguinte, mas só faz o [64; 8H etc visível.

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

EDITAR:

Os resultados acima em uma linha problemática

[1;64r[64;1H[64;1H[2K[64;1H[?25h[64;1H[64;.....
    
por Tim Brigham 12.12.2013 / 17:43

2 respostas

6

Você estava perto. Você quer

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

Na página tr(1) man:

-c, -C, --complement
use the complement of SET1

Atualizar

Se você quiser remover também as seqüências de escape, use o seguinte sed snippet:

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

É tirado de uma questão de falha de servidor chamada No CentOS 4.4, como posso extrair seqüências de escape de um arquivo de texto?

    
por 12.12.2013 / 18:15
1

Após algumas experiências (uso a casca de peixe, que colore tudo):

perl -pe '
    s/3\\\[(\d+;)*\d*[[:alpha:]]//g;
    s/3\\\]0;//g;
    s/\x7//g;
    s/3\(B//g;
' expect.log
    
por 12.12.2013 / 19:03

Tags