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にしておくべきでしょう。
| 固定リンク
「パソコン・インターネット」カテゴリの記事
- Tigerから移行したLeopardで時刻がおかしい(2008.12.08)
- color with grep(2008.11.27)
- iPhoneが壊れました(涙)(2008.11.10)
- [Tips] seq コマンド(2008.06.17)
- [書評] 西田 圭介 / 『Googleを支える技術』(2008.04.21)







コメント