Eu tenho um comando que produz saída em cores e gostaria de inseri-lo em um arquivo com os códigos de cores removidos. Existe um comando que funciona assim, cat
exceto que retira códigos de cores? Eu pretendo fazer algo assim:
$ command-that-produces-colored-output | stripcolorcodes > outfile
isatty(stdin)
antes de fazê-lo. Se importa de compartilhar o que é esse programa?cat
- o teste rápido que executeigrep --color=auto myusername /etc/passwd
me dá meu nome de usuário em vermelho com texto branco elsewhree.grep --color=auto myusername /etc/passwd | cat
me dá texto branco simplesgrep --color=auto
evita produzir saída colorida quando a saída padrão não é um terminal. Estou falando de um comando que gera incondicionalmente códigos de cores. (Como aponta alex acima, tal comportamento é sem dúvida um erro, mas às vezes precisamos de trabalhar com software imperfeito que não podemos facilmente corrigir a nós mesmos, e é isso que esta questão é sobre.)Respostas:
Você pensaria que haveria um utilitário para isso, mas eu não consegui encontrá-lo. No entanto, este one-liner Perl deve fazer o truque:
Exemplo:
Ou, se você quiser um script, poderá salvar como
stripcolorcodes
:Se você deseja remover apenas códigos de cores e deixar outros códigos ANSI (como o movimento do cursor) em paz, use
em vez da substituição que usei acima (que remove todos os códigos de escape ANSI).
fonte
Term::ANSIColor
. Reconheça suas fontes, por favor!Remova os códigos de cores (caracteres especiais) com o GNU sed
Ou
Tirar seqüências de escape ANSI em Python
Instale o pacote colorama python (
pip install colorama
). Coloque emstripcolorcodes
:Corra
chmod +x stripcolorcodes
.fonte
sed
é impressionante :) #Se você pode instalar o módulo Term :: ANSIColor , este script perl funcionará:
fonte
perl -mTerm::ANSIColor=colorstrip -n -e 'print colorstrip $_'
Se o seu sistema tiver acesso ao NodeJS, você poderá instalar o seguinte pacote do Node
strip-ansi-cli
,.Você pode executar seu comando da seguinte maneira:
fonte
Este comando sed fez isso por mim:
Exemplo:
fonte
sed
.Você pode usar ac para isso. Deve ser mais rápido do que qualquer coisa listada acima (embora
perl
esed
deva ser decente). Aqui está um exemplo:Como um aviso: a funcionalidade de filtragem de cores foi escrita por mim.
fonte
ac
programa parece estar aqui: hub.darcs.net/vmchale/fastcat... e se necessário,
(dnf, ...) install ansifilter
fonte