Removendo os caracteres de escape do screenlog do GNU Screen.% n

13

É possível remover as seqüências ESC no arquivo de saída do GNU Screen? Coisas como cores, guias e outros caracteres de escape entram nos arquivos de log e se tornam difíceis de decifrar.

Eu tentei o Dr. Google & Co. bem como ler o manual, mas não conseguiu encontrar nada adequado ...

Talvez eu tenha esquecido alguma coisa?

    
por shaond 22.01.2010 / 07:24

6 respostas

10

Experimente este pedaço de magia Perl:

perl -ne 's/\x1b[[()=][;?0-9]*[0-9A-Za-z]?//g;s/\r//g;s/
perl -ne 's/\x1b[[()=][;?0-9]*[0-9A-Za-z]?//g;s/\r//g;s/%pre%7//g;print' < screenlog.0
7//g;print' < screenlog.0
    
por 22.01.2010 / 11:42
9

Tente também a opção -r ou -R de menos.

less -r screenlog.0
    
por 08.10.2012 / 16:23
9

Use ansifilter.

ansifilter screenlog.txt > screenlog.txt.clean
    
por 15.07.2012 / 16:14
4

Depois de capturar sua sessão em screenlog.n, você pode catar o arquivo para o terminal e, em seguida, usar o comando de cópia impressa da tela para despejar a saída do gato em um arquivo. O resultado fornecerá uma saída limpa que não possui nenhuma sequência de escape.

A única 'pegadinha' parece ser certificar-se de que a cópia impressa captura o eveyrthing no buffer de rolagem e que o buffer de rolagem contém apenas o que você deseja capturar.

1. $ screen
2. $ cd /path/to/screenlog.n directory/
3. $ wc -l screenlog.n 
4. $ screen -X scrollback 245 # 245 is the number of lines found from your wc command + 5 
5. $ cat screenlog.n
6. $ screen -X hardcopy -h screenlog.n.cleaned 

Observe que -h garante que você capture todo o histórico de rolagem e não apenas o que está na visualização imediata

O arquivo screenlog.n.cleaned agora conterá uma cópia impressa da saída do cat e não incluirá nenhuma sequência de escape

    
por 05.09.2010 / 21:06
4

Eu uso o comando strings para tornar um log de tela legível. Sob o Debian faz parte do pacote binutils.

Como sua página man diz:

strings - find the printable strings in a object, or other binary, file

    
por 07.07.2011 / 10:33
1

Se você for o usuário screen , a solução tela impressa sugerida por Joel A postagem de Verks funcionará melhor - supondo que você tenha um grande pergaminho definido no seu .screenrc :

defscrollback 10000

você faria:

  1. Exiba seu arquivo screenlog :

    $ cat screenlog.<screen_window_num>
    
  2. Use hardcopy -h (consulte a página de manual da tela) para salvar o conteúdo da janela atual e seu buffer de rolagem no arquivo hardcopy.# :

    <Escape key> (Ctrl-a by default)
    :hardcopy -h
    
por 28.11.2014 / 20:33