« [書評] 桂 望実 / 『県庁の星』 | トップページ | [書評] 内田 樹 / 『知に働けば蔵が建つ』 »

2008/11/27

color with grep

grepコマンドで見つかったキーワードをハイライト表示すると非常に見やすくなります。

$ cat file
aa111111
aa222222
bb111111
bb222222

GNU grepであれば、grep自体のカラーオプションを使います。

$ export GREP_COLOR='01;31'
$ export GREP_OPTIONS='--color=auto'

というように環境変数を定義した上でgrepを実行すると、太字の赤色でマッチした部分を表示してくれます。(最初の01がボールド指定で、セミコロンの次の31が赤色の指定です。ANSIカラー指定になります。)

grep aa11 file
aa111111

ただ、lessなどのページャーにパイプで渡すと色が消えてしまいます。
これは、例えばファイルにリダイレクトしたりパイプで別のコマンドに渡したときに制御文字が渡らないようauto自動で判別しているからなのです。 grepコマンドの出力がターミナルのときだけ色ありにするのが--color=auto指定です。

常に色つきにしてファイルにリダイレクトすると何が起きるか見てみましょう。

$ export GREP_OPTIONS='--color=always'
$ grep aa11 file > output
$ cat -v output
^[[01;31maa11^[[00m^[[K1111

二次利用するには危険なことがわかるかと思います。

なので、lessに渡しても色つきで表示させるためにはgrep側で常に色つきで出力するための指定と、less側でそれを解釈して色つきで表示するための指定が必要になります。

$ export GREP_OPTIONS='--color=always'
$ grep 1111 file | less -R
aa111111
bb111111

GREP_COLORとGREP_OPTIONSは毎回指定するのはナンセンスなので.bash_profileなどに指定しておくのがよいと思いますが、alwaysではなくautoにしておくべきでしょう。

|

« [書評] 桂 望実 / 『県庁の星』 | トップページ | [書評] 内田 樹 / 『知に働けば蔵が建つ』 »

パソコン・インターネット」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/40047/43246889

この記事へのトラックバック一覧です: color with grep:

« [書評] 桂 望実 / 『県庁の星』 | トップページ | [書評] 内田 樹 / 『知に働けば蔵が建つ』 »