Como logar “un-ANSI-fy”?

10

Ultimamente tem havido uma tendência das ferramentas de linha de comando a usar cores ANSI sofisticadas em sua saída de log (por exemplo, NPM e uma série de ferramentas baseadas em nodejs, rvm, docker e algumas outras ferramentas "modernas").

Isso facilita a leitura na tela (*), mas não é tão bom quando você deseja enviar a saída para um arquivo de log ou por meio de um transporte que não manipula bem o ANSI, como várias ferramentas de execução remota e baseadas na web. soluções de monitoramento. Um monte de ferramentas mais maduras, pelo menos, teve a decência de detectar quando a saída não é um TTY e desativar a cor, mas não com os novos CLIs "user friendly" - o que me deixa tentar se livrar das cores ANSI por canalização a saída através de outro processo.

Seding a saída através de s/\x1B\[[0-9]*\w//g parece fazer o trabalho, mas existe uma abordagem mais limpa do que apenas copiar e colar expressões regulares em todos os meus scripts?

(*) pelo menos até que a ferramenta tente exibir erros em vermelho escuro no seu terminal de segundo plano escuro.

    
por Guss 14.01.2015 / 15:05

1 resposta

1

"ansifilter -p" pode ser útil para você ...

Está no repositório do Fedora; -p especifica a saída simples:

Name        : ansifilter
From repo   : updates
Summary     : ANSI terminal escape code converter
URL         : http://www.andre-simon.de/doku/ansifilter/ansifilter.php
License     : GPLv3+
Description : Ansifilter handles text files containing ANSI terminal escape codes.
            : The command sequences may be stripped or be interpreted to generate formatted
            : output (HTML, RTF, TeX, LaTeX, BBCode).
    
por 29.01.2015 / 06:57