Kleuren zijn handig om de uitvoer van een programma duidelijker te maken. Het programma ls bijvoorbeeld gebruikt kleuren om bestandstypes aan te duiden, en allerlei programma's tonen foutmeldingen in het rood. Als je in een interactieve shell-sessie werkt, is dat nuttig, maar als je de uitvoer van die programma's naar een bestand schrijft, wil je die kleuren normaal niet zien. De meeste programma's testen daarom of hun uitvoer omgeleid wordt en genereren in dat geval geen kleuren.

ANSI-kleurencodes

Sommige programma's houden daar echter geen rekening mee, en als je het bestand met de uitvoer bekijkt, zie je dan dat er allerlei codes zoals  in staan. Dat is een voorbeeld van een ANSI escape code, in dit geval één die de tekst in het groen toont. Met die codes stelt een programma voor- en achtergrondkleur in, evenals cursorposities. Als je enkel de codes voor kleuren wil verwijderen, kan dat bijvoorbeeld met de volgende sed-opdracht:

$ programmadatkleurentoont | sed -r 's/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g' > bestandzonderkleuren.txt

Hierbij staat de \x1B in de reguliere expressie voor de hexadecimale voorstelling van de ASCII-code voor de Escape-toets. Daarna komt de [, optioneel één of twee cijfers, optioneel een puntkomma en nog eens één of twee cijfers, waarna de m of de K de code afsluit. De sed-opdracht vervangt elke tekenreeks die aan die reguliere expressie voldoet door een lege tekenreeks, waardoor alle mogelijke ANSI-kleurencodes uit de uitvoer gestript worden.

Overigens bestaan er veel meer ANSI escape codes dan voor kleuren. Zo kun je ook de cursor verplaatsen en de cursorpositie opslaan, zie hiervoor de volledige lijst met ANSI escape codes. De meeste programma's gebruiken echter enkel de kleurencodes, waarvoor de voorgaande reguliere expressie volstaat. In Python kun je eenvoudig kleurencodes verwijderen met het pakket colorama en in Perl is dat mogelijk met de module Term::ANSIColor. Bekijk hiervoor de voorbeelden bij de vraag over het onderwerp op StackExchange.