grep よりも fgrep のほうが便利

私は grep よりも fgrep のほうが、よく使う。
しかし、fgrep の知名度は grep よりも低いらしい。
grep は 正規表現で検索するが、fgrep指定した文字列をそのまま検索する。
例えば、次の内容の test1.txt という名前のファイルがあったとする
$ cat -n test1.txt
1 Version 1.4
2 1.3 cm
3 galaxy express 999
4 lotus 123
5 a quick brown fox jumps over the lazy dog.
6 101.3 inch
$
grep で 1.3 を検索すると次のようになる
$ grep -n 1.3 test1.txt
2:1.3 cm
4:lotus 123
6:101.3 inch
$
ピリオド(.) は正規表現で任意の1文字を表す。1.3 がだけ欲しかったのに…
fgrep は 正規表現を無視するから、ちゃんと 1.3 だけ表示される
$ fgrep -n 1.3 test1.txt
2:1.3 cm
6:101.3 inch
$
あれれ?4行目の 101.3 inch は、いらないよ。こんな時は -w を指定する
$ fgrep -wn 1.3 test1.txt
2:1.3 cm
$
これでスッキリ。-w を指定すると単語単位で検索してくれる。
正規表現を使えなくても fgrep で十分なことが多い。まれに fgrep がないOSもあるが、 grep -F とすると fgrep 同じ意味になる。
POSIXでは、grep -E を推奨しているらしい。

とはいえ、そもそも、初心者は正規表現のメタ文字なんか 記憶していないでしょ?

その割には、「grep 入門」といいながら、最初に出てくるのは 正規表現の説明になっているネット記事や解説書が多い。

ちなみに、英語だけど、まるまる一冊 grep の本がある。grep マニアにはおすすめ:
grep Pocket Reference: A Quick Pocket Reference for a Utility Every Unix User Needs (Pocket Reference (O'Reilly)) (English Edition) - Bambenek, John, Klus, Agnieszka
grep Pocket Reference: A Quick Pocket Reference for a Utility Every Unix User Needs (Pocket Reference (O'Reilly)) (English Edition) - Bambenek, John, Klus, Agnieszka

この記事へのコメント

この記事へのトラックバック