基礎的なコマンドなのだが、よく使い方忘れるので、備忘。
テキストファイルの中に特定の文字列が含まれた行を表示させるコマンド。だいたいのLinux/Unix系OSでデフォルトで入ってる。
基本的な使い方
$ cat テキストファイル | grep 検索したい文字列
..
例:
$ cat /etc/sshd_config | grep PermitRootLogin
と実行すると/etc/sshd_config という設定ファイル内の 「PermitRootLogin」という文字列が含まれる行が表示される。
上記は最初にテキストファイルをcat で開いているが、以下のやりかたでも同じ意味になる。
$ grep 検索したい文字列 テキストファイル
検索したい文字に空白やメタ文字が含まれる場合はくくる
空白を含む文字列を検索する例:
$ cat abc.txt | grep “hatena blog”
正規表現やメタ文字を含む文字列を検索する場合は、メタ文字の直前に¥(円マーク)をいれる (下の例だと$が行末を表すメタ文字なのでその直前に¥を入れてる。¥は\で表示される場合もある)
$ cat abc.txt | grep hatena\$blog
該当行だけじゃなくて、その前後の行も見てみたい
該当行と上5行を表示
$ cat abc.txt | grep -B 5 hatena
該当行と下5行を表示
$ cat abc.txt | grep -A 5 hatena
行頭、行末にある文字列を検索
appleという文字列で始まる行だけ表示
% grep ^apple aaa.txt
appleという文字列で終わる行だけ表示
% grep apple$ aaa.txt
Windowsにはgrepがないので、findstr を使う
more aaa.txt | findstr bbb
以上