J'ai une commande qui produit la couleur de la couleur et je voudrais le conduire dans un fichier avec les codes de couleur supprimés. Y a-t-il une commande qui fonctionne comme cat
sauf qu'il enregistre les codes de couleur? Je prévois de faire quelque chose comme ça:
$ command-that-produces-colored-output | stripcolorcodes > outfile
Vous penseriez qu'il y aurait une utilité pour cela, mais je ne pouvais pas le trouver. Cependant, ce Perl One-Liner devrait faire l'affaire:
Perl -pe 's/\e\[?.*?[\@-~]//g'
Exemple:
$ command-that-produces-colored-output | Perl -pe 's/\e\[?.*?[\@-~]//g' > outfile
Ou, si vous voulez un script, vous pouvez enregistrer sous stripcolorcodes
:
#! /usr/bin/Perl
use strict;
use warnings;
while (<>) {
s/\e\[?.*?[\@-~]//g; # Strip ANSI escape codes
print;
}
Si vous voulez dépouiller uniquement Codes de couleur et laissez tout autre code ANSI (comme le mouvement du curseur) seul, utilisez
s/\e\[[\d;]*m//g;
au lieu de la substitution, j'ai utilisé ci-dessus (qui supprime tous les codes d'échappement ANSI).
sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g"
Ou
Installation colorama python paquet (pip install colorama
). Mettre dans stripcolorcodes
:
#!/usr/bin/env python
import colorama, fileinput, sys;
colorama.init(strip=True);
for line in fileinput.input():
sys.stdout.write(line)
Run chmod +x stripcolorcodes
.
Si vous pouvez installer le module TERM: ANSICOLOR , ce script Perl fonctionne:
#!/usr/bin/env Perl
use Term::ANSIColor qw(colorstrip);
print colorstrip $_ while <>;
Si votre système a accès à NodeJS Vous pouvez installer le fichier suivant Node package, strip-ansi-cli
.
$ npm install -g strip-ansi-cli
Vous pouvez ensuite exécuter votre commande comme si:
$ command-that-produces-colored-output | strip-ansi > outfile
Cette commande sed a fait pour moi:
sed -r "s/\\^\\[(\\[[^@-~]+[@-~]|[[email protected]_]|%@)//g"
Exemple:
$ command-that-produces-colored-output | sed -r "s/\\^\\[(\\[[^@-~]+[@-~]|[[email protected]_]|%@)//g" > outfile
Vous pouvez utiliser AC pour cela. Il devrait être plus rapide que tout ce qui est indiqué ci-dessus (bien que Perl
et sed
devrait être décent). Voici un exemple:
curl -s wttr.in/LA | ac -s
En tant que non-responsabilité: la fonctionnalité de filtrage de la couleur a été écrite par moi.
$ command-that-produces-colored-output | ansifilter
... et si nécessaire, (dnf, ...) install ansifilter