“UN-ANSI-fy” günlükleri nasıl kullanılır?


10

Son zamanlarda, komut satırı araçları tarafından günlük çıktılarında süslü ANSI renkleri kullanma eğilimi olmuştur (örneğin, NPM ve bir dizi nodejs tabanlı araç, rvm, docker ve birkaç "modern" araç).

Bu, ekranda okumayı (*) güzelleştirir, ancak çıktıyı bir günlük dosyasına aktarmak istediğinizde veya çeşitli uzaktan yürütme araçları ve web tabanlı izleme çözümleri gibi ANSI'yi iyi işlemeyen bir aktarım yoluyla çok hoş değildir. Bir çok daha olgun araç en azından çıktı bir TTY olmadığında ve rengi devre dışı bıraktığında tespit etme nezaketine sahipti, ancak bu yeni fangled "kullanıcı dostu" CLI'lerle değil - bu da beni boru ile ANSI renklerinden kurtulmaya çalışıyor çıktı başka bir süreç üzerinden.

Çıktıyı baştan s/\x1B\[[0-9]*\w//gçıkarmak işi hallediyor gibi görünüyor, ancak daha düzenli bir yaklaşım var mı?

(*) en azından araç, koyu arka plan terminalinizde hataları koyu kırmızı renkte göstermeye çalışana kadar.


2
Bakınız: unix.stackexchange.com/questions/14684/… - unix.stackexchange.com/questions/111899/… stackoverflow.com/questions/17998978/… superuser.com/questions/380772/… - 4+ soru üstü 3 sitede 3 yıllık bir süre sadece regex değiştirme / kaldırma aracı kullanmak için cevap aldık. Daha iyi bir şey olmadığını tahmin ediyorum.
Zoredache

Tartışma için görünen tek şey, hangi regex'in hangi durum için en iyisi olduğu.
Zoredache

1
is there a cleaner approach then just copy pasting regular expressions into all of my scripts?- Temizleme filtrenizi '/ usr / local / bin / stripttycolor.sh` ya da başka bir dosyaya kaydedin. Bu şekilde normal ifade tek bir konumla sınırlı mı?
Zoredache

3
Çıktıyı bir dosyaya yazacağınızı biliyorsanız, yapılacak en kolay şey (en azından NPM için) --no-colorbayrakla çalışmaktır. Diğer birçok komutun da benzer bayrakları vardır.
Moshe Katz

@MosheKatz: maalesef tüm komutlar bunu yapmıyor bower.
Guss

Yanıtlar:


1

"ansifilter -p" sizin için yararlı olabilir ...

Fedora depolarında; -p düz çıktıyı belirtir:

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

Güzel çalışıyor, şimdi sadece Ubuntu için paketlenmiş almak gerekiyor :-)
Guss
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.