この数年前に脚本を書きました。 highlight
の呼び出しを連続してパイプすることで、複数の色のケースを簡単にカバーできます。
README から:
Usage: ./highlight [-i] [--color=COLOR_STRING] [--] <PATTERN0> [PATTERN1...]
This is highlight version 1.0.
This program takes text via standard input and outputs it with the given
perlre(1) pattern(s) highlighted with the given color. If no color option
is specified, it defaults to 'bold red'. Colors may be anything
that Perl's Term::ANSIColor understands. This program is similar to
"grep --color PATTERN" except both matching and non-matching lines are
printed.
The default color can be selected via the $HIGHLIGHT_COLOR environment
variable. The command-line option takes precedence.
Passing -i or --ignore-case will enable case-insensitive matching.
If your pattern begins with a dash ('-'), you can pass a '--' argument
after any options and before your pattern to distinguish it from an
option.
はい、これを行う方法があります。つまり、端末が ANSI エスケープ シーケンスをサポートしている限り、 .これは存在するほとんどの端末です。
grep、sedなどの方法を説明する必要はないと思います。ポイントは色ですよね?
以下を参照してください。
WARN yellow
ERROR red
foo green
ここに例があります:
kent$ echo "WARN
ERROR
foo"|sed 's#WARN#\x1b[33m&#; s#ERROR#\x1b[31m&#; s#foo#\x1b[32m&#'
注意 :\x1b
ESC の場合は 16 進数です 文字 (^V Esc )。
結果を見るには:
ログに色を付けるための小さなユーティリティである TxtStyle を作成しました。 ~/.txts.conf
で強調表示する正規表現を定義します ファイル:
[Style="example"]
!red: regex("error")
green: regex("\d{4}-\d\d-\d\d")
# ...
そして、スタイルを適用します:
txts -n example example.log
または、出力をパイプすることもできます
tail -f example.log | txts -n example
私は何年もの間、これに grc というツールを使用してきました。魅力のように機能します。多くの標準ログ出力とフォーマット用の非常に優れたテンプレートが付属しており、独自の定義も簡単です。私がよく使用するコマンドは
です。grc tail -f /var/log/syslog
エラーを見つけやすいように syslog 出力を色分けします (通常は赤でマークされます)。
ここでツールを見つけてください:
https://github.com/garabik/grc
(最も一般的な Linux フレーバーのパッケージとしても利用できます)。