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

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

 

1.grepコマンドを使う

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

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

もしくは

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

 

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

20160131_000010

 

なお、色を変更する場合は、以下のように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 'キーワード|$' ...

20160131_000011

Sponsored Links

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 色 キーワード

20160131_000012

 

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

 

2016/07/03 追記

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

20160702_073211000000

 

Pocket

Written by blacknon

インフラ系のSE。一時期はプログラマ。 仮想化とオープンソースに興味あり。一日中寝てたい今日このごろ。 スペインとかで働きたいなぁ…(シエスタがあるので)

This article has 1 comments

  1. Pingback: Linux/Macのコンソール上で条件に一致する箇所をハイライト表示させる『colout』コマンド | 俺的備忘録 〜なんかいろいろ〜

Leave a Comment

メールアドレスが公開されることはありません。