Come "annulla-ANSI-fy" registri?


10

Ultimamente c'è stata la tendenza da parte degli strumenti della riga di comando di usare fantasiosi colori ANSI nel loro output di log (ad esempio, NPM e una serie di strumenti basati su nodejs, rvm, docker e alcuni altri strumenti "moderni").

Ciò rende piacevole la lettura sullo schermo (*), ma non è così piacevole quando si desidera reindirizzare l'output in un file di registro o tramite un trasporto che non gestisce bene ANSI, come vari strumenti di esecuzione remota e soluzioni di monitoraggio basate sul web. Molti strumenti più maturi hanno avuto almeno la decenza di rilevare quando l'output non è un TTY e disabilitano il colore, ma non con quelle nuove CLI "user friendly", che mi lasciano il tentativo di sbarazzarmi dei colori ANSI tramite piping l'output attraverso l'ennesimo processo.

Sedare l'output s/\x1B\[[0-9]*\w//gsembra portare a termine il lavoro, ma esiste un approccio più pulito quindi copiare e incollare espressioni regolari in tutti i miei script?

(*) almeno fino a quando lo strumento non tenta di visualizzare errori in rosso scuro sul terminale di sfondo scuro.


2
Vedi: unix.stackexchange.com/questions/14684/... - unix.stackexchange.com/questions/111899/... stackoverflow.com/questions/17998978/... superuser.com/questions/380772/... - Tra 4+ domande più per un periodo di 3 anni su 3 siti abbiamo ottenuto risposte solo per utilizzare uno strumento che sostituisce / rimuove regex. Immagino che non c'è niente di meglio.
Zoredache,

L'unica cosa che sembra essere in discussione è quale regex è la migliore per quale situazione.
Zoredache,

1
is there a cleaner approach then just copy pasting regular expressions into all of my scripts?- Salvare il filtro di pulizia in un file chiamato '/ usr / local / bin / stripttycolor.sh` o qualcosa del genere? In questo modo hai regex confinato in una singola posizione?
Zoredache,

3
Se sai che scriverai l'output in un file, la cosa più semplice da fare (almeno per NPM) è eseguire con il --no-colorflag. Molti altri comandi hanno anche flag simili.
Moshe Katz,

@MosheKatz: purtroppo non tutti i comandi lo fanno, ad esempio bower.
Guss,

Risposte:


1

"ansifilter -p" potrebbe esserti utile ...

È nei repository Fedora; -p specifica l'output semplice:

Name        : ansifilter
From repo   : updates
Summary     : ANSI terminal escape code converter
URL         : http://www.andre-simon.de/doku/ansifilter/ansifilter.php
License     : GPLv3+
Description : Ansifilter handles text files containing ANSI terminal escape codes.
            : The command sequences may be stripped or be interpreted to generate formatted
            : output (HTML, RTF, TeX, LaTeX, BBCode).

Funziona bene, ora devo solo impacchettarlo per Ubuntu :-)
Guss
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.