Một giải pháp hoạt động để tô màu tất cả các loại văn bản, không chỉ logfiles, là một công cụ Python, ' colout '.
pip install colout
myprocess | colout REGEX_WITH_GROUPS color1,color2... [attr1,attr2...]
Trong đó bất kỳ văn bản nào trong đầu ra của 'my process' khớp với nhóm 1 của regex sẽ được tô màu bằng color1, nhóm 2 với color2, v.v.
Ví dụ:
tail -f /var/log/mylogfile | colout '^(\w+ \d+ [\d:]+)|(\w+\.py:\d+ .+\(\)): (.+)$' white,black,cyan bold,bold,normal
tức là nhóm regex đầu tiên (parens) khớp với ngày ban đầu trong logfile, nhóm thứ hai khớp với tên tệp python, số dòng và tên hàm và nhóm thứ ba khớp với thông điệp tường trình xuất hiện sau đó. Điều này trông giống như:
Lưu ý rằng các dòng hoặc các phần của dòng không khớp với bất kỳ biểu thức chính nào của tôi vẫn được lặp lại, do đó, đây không giống như 'grep --color' - không có gì được lọc ra khỏi đầu ra.
Rõ ràng điều này đủ linh hoạt để bạn có thể sử dụng nó với bất kỳ quy trình nào, không chỉ là các logfiles. Tôi thường chỉ cần đánh một regex mới bất cứ khi nào tôi muốn tô màu một cái gì đó. Vì lý do này, tôi thích colout hơn bất kỳ công cụ tô màu logfile tùy chỉnh nào, bởi vì tôi chỉ cần học một công cụ, bất kể tôi đang tô màu gì: ghi nhật ký, đầu ra thử nghiệm, cú pháp tô sáng đoạn mã trong thiết bị đầu cuối, v.v.
sed
: stackoverflow.com/a/14691971/52074