Linuxでファイル・標準出力の特定のキーワードだけハイライト表示させる

LinuxやMacを使っていて、tail -Fやcatを使用時に特定のキーワード(例えばerrorとか)だけをハイライト表示させたい時がある。
だからと言っても、そのキーワードのある行だけが表示されるのは困り、全ての行を表示させたい。

1.grepコマンドを使う

そんな時でも、grepコマンドで対応することができる。
以下のように、「$(行末)」を指定しコマンドを実行することで、全ての行を表示させつつ対象のキーワードをハイライトさせることができる。

コマンド | grep --color=auto -e '$' -e 'キーワード'

もしくは

コマンド | grep -E --color=auto 'キーワード|$'

キーワードを複数指定する場合、「-e」でつなげていくか、egrep方式であればパイプでつなげていけばいい。
以下、CentOS 7でやってみた結果がこちら。

なお、色を変更する場合は、以下のようにgrepコマンド実行前に変数「GREP_COLORS」にコードを代入し、「--color=always」オプションを付与することで対応できる。
かなり煩雑になるので、あまりいい方法とはいえないと思われる。

コマンド | GREP_COLORS='カラーコード' grep --color=always -e 'キーワード' -e '$' | GREP_COLORS='カラーコード' grep --color=always -e 'キーワード' -e '$' ...

もしくは

コマンド | GREP_COLORS='カラーコード' grep -E --color=always 'キーワード|$' | GREP_COLORS='カラーコード' grep -E --color=always 'キーワード|$' ...

2.その他、有志の開発ツールを使う

有志の開発したツールで、『dev-shell-essentials』というツールがある。
これらを使う事で、grepより簡単にハイライト表示させることができる。

まず、以下のコマンドでインストールを行う。

git clone https://github.com/kepkin/dev-shell-essentials.git
cd dev-shell-essentials
source dev-shell-essentials.sh

インストール完了後、実際に使用してみよう。
以下のように使用する。複数指定する場合は、パイプでつなげていけばいい。

コマンド | highlight 色 キーワード

こっちの方が、色分け含め簡単に出来そうだ。


2016/07/03 追記

そのほか、coloutというコマンドが有効に使えそうだ。
詳細についてはリンク先を参照してもらいたい。