【Linux】特定の文字列を表示させるgrepコマンド

基礎的なコマンドなのだが、よく使い方忘れるので、備忘。

テキストファイルの中に特定の文字列が含まれた行を表示させるコマンド。だいたいの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

以上