Você pensaria que haveria um utilitário para isso, mas não consegui encontrá-lo. No entanto, este one-liner Perl deve fazer o truque:
perl -pe 's/\e\[?.*?[\@-~]//g'
Exemplo:
$ command-that-produces-colored-output | perl -pe 's/\e\[?.*?[\@-~]//g' > outfile
Ou, se você quiser um script, salve como stripcolorcodes
:
#! /usr/bin/perl
use strict;
use warnings;
while (<>) {
s/\e\[?.*?[\@-~]//g; # Strip ANSI escape codes
print;
}
Se você quiser desmembrar códigos de cores somente e deixar outros códigos ANSI (como o movimento do cursor) sozinhos, use
s/\e\[[\d;]*m//g;
em vez da substituição que usei acima (que remove todos os códigos de escape ANSI).