notebook

都内でWEB系エンジニアやってます。

grepの色

はじめまして、こんにちは、swfzです。

 

文章を書くことに慣れた方が良いなと思ったのでブログという形で発信していこうとおもいます。

主な用途は備忘録。主に誰でも知っているようなことですが、いつか価値あるものを発信していけたらと思います。

 

今日はgrepコマンドの色付けについてはまったのでメモ。

 

grepする時に環境変数GREP_COLOR,GREP_OPTIONSなど指定しておいてあげるとgrepの結果をハイライトしてくれて視認性が上がり、作業効率も?上がるかと思います。

 

ある日、データ出し用にapacheのアクセスログをgrepで絞って集計してレポートを出力するプログラムを書く事になりました。

ある程度動くスクリプトをもらっていたのでそれを今回のレポート仕様にするだけの簡単なお仕事。。。のはずでした。

 

しかし、実際にやってみると結果が何も出てこない!!

 

先輩にも試してもらいましたが、先輩の環境では同じプログラムでも結果が出てくる。。。

 

プログラム内のgrepコマンドの結果をテキストに出力してみると。。。。

 

test^[[01;32mdef^[[00m^[[K

\(^o^)/

 

grep時に--colorを指定していたため、出力にエスケープシーケンスが出力されていたようです。

ターミナル上で見ると色がついているだけだったのですが、テキストに出力してみると残念な感じに、、

そりゃなにも出力されませんね。

 

今回スクリプト内にgrepを使ってるところがあったので、実行時のオプションに「--color=no」とつけてあげることで対応しました。

 

まぁ一度知ってしまえばどうって事無いですが、業務で使ってるとたまにそういう罠に引っかかるので覚えておくためにメモ。

また、環境によっては動かない人もいるよってことでプログラム内でgrepを使う時は「--color=no」をつけるようにしようってお話でした。