Bagaimana cara "un-ANSI-fy" log?


10

Akhir-akhir ini ada kecenderungan oleh alat-alat baris perintah untuk menggunakan warna ANSI yang mewah dalam output log mereka (misalnya, NPM dan sejumlah alat berbasis nodejs, rvm, buruh pelabuhan, dan beberapa alat "modern" lainnya).

Ini membuatnya enak dibaca di layar (*), tetapi tidak begitu bagus ketika Anda ingin menyalurkan output ke file log atau melalui transport yang tidak menangani ANSI dengan baik, seperti berbagai alat eksekusi jarak jauh dan solusi pemantauan berbasis web. Banyak alat yang lebih dewasa setidaknya memiliki kesopanan untuk mendeteksi ketika output bukan warna TTY dan nonaktifkan, tetapi tidak dengan CLI "ramah pengguna" baru yang ketinggalan jaman - yang membuat saya mencoba untuk menyingkirkan warna ANSI dengan memipaan output melalui proses lain.

Seding output melalui s/\x1B\[[0-9]*\w//gtampaknya menyelesaikan pekerjaan, tetapi apakah ada pendekatan yang lebih bersih kemudian hanya menyalin menempelkan ekspresi reguler ke semua skrip saya?

(*) setidaknya sampai alat mencoba menampilkan kesalahan dengan warna merah gelap di terminal latar belakang gelap Anda.


2
Lihat: unix.stackexchange.com/questions/14684/… - unix.stackexchange.com/questions/111899/... stackoverflow.com/questions/17998978/… superuser.com/questions/380772/… - Antara 4+ pertanyaan selesai rentang 3 tahun di 3 situs kami hanya mendapatkan jawaban untuk menggunakan alat yang melakukan penggantian / penghapusan regex. Saya kira tidak ada yang lebih baik.
Zoredache

Tentang satu-satunya hal yang tampaknya diperdebatkan adalah regex mana yang terbaik untuk situasi itu.
Zoredache

1
is there a cleaner approach then just copy pasting regular expressions into all of my scripts?- Simpan filter pembersihan Anda ke file yang disebut '/ usr / local / bin / stripttycolor.sh` atau sesuatu? Dengan begitu Anda memiliki regex terbatas pada satu lokasi?
Zoredache

3
Jika Anda tahu bahwa Anda akan menulis output ke file, hal termudah untuk dilakukan (setidaknya untuk NPM) adalah menjalankannya dengan --no-colorflag. Banyak perintah lain juga memiliki flag serupa.
Moshe Katz

@ MosheKatz: sayangnya tidak semua perintah dilakukan, misalnya bower.
Guss

Jawaban:


1

"ansifilter -p" mungkin berguna bagi Anda ...

Ada di dalam repo Fedora; -p menetapkan output sederhana:

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).

Bekerja dengan baik, sekarang saya hanya perlu membuatnya dikemas untuk Ubuntu :-)
Guss
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.