• このエントリーをはてなブックマークに追加

【linux豆知識】grepの種類

  • このエントリーをはてなブックマークに追加

検索
zaco muraです。

linuxの便利なコマンドと言えば、上位に来るであろうgrepですが、これまた奥が深いコマンドになっています。
細かいオプションの説明はいつか書こうと思いますが、今回はgrepの種類について説明します。

スポンサーリンク
Sponsords Link

grepとは

簡単に言うと、文字列を検索するコマンドです。ある文字列がファイル(や標準出力)にあるかどうかを確認するような用途で使います。

grepの種類

実はgrepにはいくつか種類があります。これを知っておくことで処理時間を短縮できたり、コマンド数を減らしたりといろいろ良いことがあるかと思いますので説明していきます。

1.拡張正規表現を使う : egrep

簡単に言うと、複雑な正規表現を使うことができるgrepです。
個人的にはegrepを使う場合は複数キーワードを検索する場合に使います。

[zacomura@zacodesign ~]$ cat sample.txt
aaa
bbb
ccc
ddd
[zacomura@zacodesign ~]$ egrep '(aaa|bbb)' sample.txt
aaa
bbb

上記のように”aaa”と”bbb”の2つの条件にマッチします。
ただ、grepでも普通の正規表現は使いますし、拡張正規表現を使うような複雑な処理をしたい場合はたいていawkとかを使うので、実際はあんまり活躍しないコマンドな気もします。(個人的見解)
なお、grep に -E オプションを付けることで同じ機能が使えます。

2.固定文字列として検索(正規表現を完全に無視) : fgrep

反対に、大活躍なのがこのfgrepです。これはfixed grepの略で、正規表現を完全に無視し、ただの文字列として検索してくれます。
例えば、普通のgrepで[ab]というのは、a もしくは b のどちらか1文字にマッチという意味です。

[zacomura@zacodesign ~]$ cat sample.txt
[ab]cccc
aaa
bbb
[zacomura@zacodesign ~]$ grep [ab] sample.txt
[ab]cccc
aaa
bbb

上記のように3行全てマッチします。
一方、fgrepでは正規表現を無視して”[ab]”というただの文字列として扱うため、以下のようになります。

[zacomura@zacodesign ~]$ cat sample.txt
[ab]cccc
aaa
bbb
[zacomura@zacodesign ~]$ fgrep [ab] sample.txt
[ab]cccc

fgrepのメリットはズバリ高速に動作することです。
数ギガあるようなログファイルを検索する時には、標準のgrepと比較して体感でわかるほど速く動作します。
なお、grepに -F オプションを付けることで同じ機能が使えます。

3.圧縮したファイルにも使える : zgrep

ここまでとは少し毛色が違いますが、zgrepは圧縮ファイルを解凍することなく直接検索できます。

[zacomura@zacodesign ~]$ cat sample.txt
aaa
bbb
ccc
[zacomura@zacodesign ~]$ gzip sample.txt
[zacomura@zacodesign ~]$ grep "aaa" sample.txt.gz
[zacomura@zacodesign ~]$ zgrep "aaa" sample.txt.gz
aaa

4.プロセスが存在するか確認 : pgrep

こちらも少し毛色が違い、ファイルを検索するものではなく、サーバ上に存在するプロセスを検索する時に使います。

[zacomura@zacodesign ~]$ ps -ef | grep rsyslog
root       943     1  0  2015 ?        00:00:26 /sbin/rsyslogd -i /var/run/syslogd.pid -c 5
zacomura 15329 15288  0 08:54 pts/0    00:00:00 grep rsyslog
[zacomura@zacodesign ~]$ pgrep rsyslog
943

このように、プロセスのpidが返ります。
なお、シェルスクリプトのpidを検索する場合には、-f オプションを付ければうまくいきます。

まとめ

ということで、grepの種類をご紹介しました。
特にfgrep(grep -F)は一度使って頂ければと思います。grepの動作が遅くて困っている人は感動すること間違いなしです。

スポンサーリンク
Sponsords Link
  • このエントリーをはてなブックマークに追加

ZacoDesign

スポンサーリンク
Sponsords Link