Làm thế nào để các bản ghi nhật ký un-ANSI-fy?


10

Gần đây đã có xu hướng sử dụng các công cụ dòng lệnh để sử dụng màu ANSI ưa thích trong đầu ra nhật ký của chúng (ví dụ: NPM và một loạt các công cụ dựa trên nodejs, rvm, docker và một vài công cụ "hiện đại" khác).

Điều này làm cho nó dễ đọc trên màn hình (*), nhưng không hay khi bạn muốn chuyển đầu ra sang tệp nhật ký hoặc thông qua một phương tiện giao thông không xử lý tốt ANSI, như các công cụ thực thi từ xa khác nhau và các giải pháp giám sát dựa trên web. Rất nhiều công cụ hoàn thiện hơn ít nhất có độ chính xác để phát hiện khi đầu ra không phải là TTY và vô hiệu hóa màu, nhưng không phải với các CLI "thân thiện với người dùng" mới bị làm mờ đó - khiến tôi cố gắng loại bỏ các màu ANSI bằng đường ống đầu ra thông qua một quá trình khác.

s/\x1B\[[0-9]*\w//gCó vẻ như đầu ra thông qua việc hoàn thành công việc, nhưng có một cách tiếp cận sạch hơn sau đó chỉ cần sao chép các biểu thức thông thường vào tất cả các tập lệnh của tôi?

(*) ít nhất cho đến khi công cụ cố gắng hiển thị lỗi màu đỏ sẫm trên thiết bị đầu cuối nền tối của bạn.


2
Xem: unix.stackexchange.com/questions/14684/... - unix.stackexchange.com/questions/111899/... stackoverflow.com/questions/17998978/... superuser.com/questions/380772/... - Giữa 4+ câu hỏi trên một khoảng thời gian 3 năm trên 3 trang web, chúng tôi chỉ có câu trả lời để sử dụng một công cụ thay thế / xóa regex. Tôi đoán không có gì tốt hơn.
Zoredache

Về điều duy nhất có vẻ tranh luận là regex nào là tốt nhất cho tình huống nào.
Zoredache

1
is there a cleaner approach then just copy pasting regular expressions into all of my scripts?- Lưu bộ lọc dọn dẹp của bạn vào một tệp có tên '/ usr / local / bin / tướcttycolor.sh` hoặc một cái gì đó? Bằng cách đó bạn có regex giới hạn trong một vị trí?
Zoredache

3
Nếu bạn biết rằng bạn sẽ ghi đầu ra vào một tệp, điều dễ nhất để làm (ít nhất là đối với NPM) là chạy với --no-colorcờ. Nhiều lệnh khác cũng có cờ tương tự.
Moshe Katz

@MosheKatz: tiếc là không phải tất cả các lệnh đều làm như vậy bower.
Guss

Câu trả lời:


1

"Ansifilter -p" có thể hữu ích cho bạn ...

Đó là trong repos Fedora; -p chỉ định đầu ra đơn giản:

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

Hoạt động tốt, bây giờ tôi chỉ cần đóng gói cho Ubuntu :-)
Guss
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.