Learn to Live and Live to Learn

IT(たまにビジネス)に関する記事を読んで、考えて、使ってみたことをまとめる場。

git grep

Git grepを便利に使う-eオプションについて - Qiita
を参考にgit grepを使ってみました。

git grepとは、gitで管理しているリポジトリ内「だけ」をgrepするコマンド

です。

-eオプション

-eの後にgrepしたい条件を書くことで、正規表現による絞り込みができます。

$ git grep -e 'GET /apache'
log.ltsv:host:127.0.0.1 user:frank      epoch:1372694390        req:GET /apache_pb.gif HTTP/1.0 stat
log.ltsv:host:127.0.0.1 user:john       epoch:1372794390        req:GET /apache_pb.gif HTTP/1.0 stat
log.ltsv:host:127.0.0.1 user:-  epoch:1372894390        req:GET /apache_pb.gif HTTP/1.0 status:503
log.ltsv:host:127.0.0.1 user:frank      epoch:1372694390        req:GET /apache_pb.gif HTTP/1.0 stat
main.pl:        req => 'GET /apache_pb.gif HTTP/1.0',
main_v2.pl:     req => 'GET /apache_pb.gif HTTP/1.0',
t/01_use.t:     req => 'GET /apache_pb.gif HTTP/1.0',
t/log.t:        req => 'GET /apache_pb.gif HTTP/1.0',
t/parser.t:is $parsed->[0]->{'req'}, 'GET /apache_pb.gif HTTP/1.0';
t/parser.t:is $parsed->[1]->{'req'}, 'GET /apache_pb.gif HTTP/1.0';
t/parser.t:is $parsed->[2]->{'req'}, 'GET /apache_pb.gif HTTP/1.0';
t/parser.t:is $parsed->[3]->{'req'}, 'GET /apache_pb.gif HTTP/1.0';

--andオプションと--orオプション

andやorという形で条件を指定できます。

$ git grep -e 'GET' --and -e 'frank' --or -e 'john'
log.ltsv:host:127.0.0.1 user:frank      epoch:1372694390        req:GET /apache_pb.gif HTTP/1.0 stat
log.ltsv:host:127.0.0.1 user:john       epoch:1372794390        req:GET /apache_pb.gif HTTP/1.0 stat
log.ltsv:host:127.0.0.1 user:frank      epoch:1372694390        req:GET /apache_pb.gif HTTP/1.0 stat
t/parser.t:is $parsed->[1]->{'user'}, 'john';

やってくれていることは、'GET'かつ'frank'、あるいは'jhon'の検索です。