You'd think there'd be a utility for that, but I couldn't find it. However, this Perl one-liner should do the trick:
perl -pe 's/\e\[?.*?[\@-~]//g'
Example:
$ command-that-produces-colored-output | perl -pe 's/\e\[?.*?[\@-~]//g' > outfile
Or, if you want a script you can save as stripcolorcodes:
#! /usr/bin/perl
use strict;
use warnings;
while (<>) {
s/\e\[?.*?[\@-~]//g; # Strip ANSI escape codes
print;
}
If you want to strip only color codes, and leave any other ANSI codes (like cursor movement) alone, use
s/\e\[[\d;]*m//g;
instead of the substitution I used above (which removes all ANSI escape codes).