J'ai une commande qui produit une sortie en couleur et j'aimerais la canaliser dans un fichier avec les codes de couleur supprimés. Existe-t-il une commande qui fonctionne comme cat
celle-ci, sauf qu'elle supprime les codes de couleur? Je prévois de faire quelque chose comme ça:
$ command-that-produces-colored-output | stripcolorcodes > outfile
isatty(stdin)
avant de le faire. L'esprit de partager quel est ce programme?cat
- un test rapide que j’aigrep --color=auto myusername /etc/passwd
fait me donne mon nom d’utilisateur en rouge avec du texte blancgrep --color=auto myusername /etc/passwd | cat
me donne du texte blanc clairgrep --color=auto
évite de produire une sortie colorée lorsque la sortie standard n'est pas un terminal. Je parle d'une commande qui génère sans condition des codes de couleur. (Comme le souligne alex ci-dessus, un tel comportement est sans doute un bug, mais nous avons parfois besoin de travailler avec des logiciels imparfaits que nous ne pouvons pas résoudre nous-mêmes, et c'est de cela que traite cette question.)Réponses:
Vous penseriez qu'il y aurait un utilitaire pour cela, mais je ne l'ai pas trouvé. Cependant, ce one-liner Perl devrait faire l'affaire:
Exemple:
Ou, si vous voulez un script, vous pouvez enregistrer en tant que
stripcolorcodes
:Si vous souhaitez supprimer uniquement les codes de couleur et laisser les autres codes ANSI (tels que le mouvement du curseur), utilisez
au lieu de la substitution que j'ai utilisée ci-dessus (qui supprime tous les codes d'échappement ANSI).
la source
Term::ANSIColor
. Reconnaissez vos sources, s'il vous plaît!Supprimer les codes de couleur (caractères spéciaux) avec GNU sed
Ou
Supprimer les séquences d'échappement ANSI en Python
Installez le paquet colorama python (
pip install colorama
). Mettre dansstripcolorcodes
:Courez
chmod +x stripcolorcodes
.la source
sed
c'est impressionnant :)Si vous pouvez installer le module Term :: ANSIColor , ce script Perl fonctionne:
la source
perl -mTerm::ANSIColor=colorstrip -n -e 'print colorstrip $_'
Si votre système a accès à NodeJS, vous pouvez installer le package de nœud suivant
strip-ansi-cli
.Vous pouvez ensuite exécuter votre commande comme suit:
la source
Cette commande sed l'a fait pour moi:
Exemple:
la source
sed
.Vous pouvez utiliser ac pour cela. Il devrait être plus rapide que tout ce qui est énuméré ci-dessus (bien que
perl
etsed
devrait être décent). Voici un exemple:A titre de non-responsabilité: la fonctionnalité de filtrage des couleurs a été écrite par moi.
la source
ac
programme semble être ici: hub.darcs.net/vmchale/fastcat... et si nécessaire
(dnf, ...) install ansifilter
la source