grep とは、テキストファイルを指定してそのファイルの中の文字列を検索するコマンドである。 grep という名称は、ラインエディタ ed のコマンド g/re/p に由来する。 その意味は「global regular expression print(ファイル全体から/正規表現に一致する行を/表示する)」で略号になっている。
-i : 大文字・小文字の区別を無視する -c : 行数を表示する
grep は単独ではもちろん、他のコマンドとの合わせ技でさらに力を発揮する。
xargs, find コマンドと合わせて、 あるディレクトリからサブディレクトリを渡り歩いてすべての html ファイルをみつけ、 その中から特定の単語があるかを調べる、というときに使える。
$ find . -name \*html -print | xargs grep "hogehoge"
実例1では grep をパイプの後段で渡していたが、パイプの前段で使う例を挙げる。 "hogehoge"が含まれていないファイルにそれぞれに関して、wc を行う。
$ grep -L "hogehoge" *.html | xargs wc
grep の -L オプションは、 hogehoge が出てこないファイルを一覧表示する、 という意味である。
Windows では、 GNU utilities for Win32 がある。なお残念ながらNT 版 UNIX-like toolsでは、 いくつか実装されていないオプションがある (egrep における -L など)。
grep の働きをするコマンドには、ほかにも egrep や fgrep、rgrep がある。 手元の Ubuntu 20.04 の man ページには、これらはそれぞれ grep -E 、grep -F 、grep -r と同じである、 と解説されている。