Linuxコマンド「grep」


grepは指定された入力(ファイル、標準入力)から、指定されたパターン(検索正規表現)にマッチする文字列を含む行を検索するコマンドです。

grep 検索パターン ファイル名
# AND条件での検索
grep 検索文字A ファイル名 | grep 検索文字B
# OR条件での検索
grep -e 検索文字A -e 検索文字B ファイル名
# Aは含むが、Bは含まないファイルの検索
grep 検索文字A ファイル名 | grep -v 検索文字B

🐠 利用例

フォルダ内を検索、行番号を表示

フォルダ内のファイルを再帰的に検索して、行番号を表示

grep -rn 検索パターン ディレクトリ

ログにマッチする箇所をリアルタイムで表示

tail -f ログファイル | grep --line-buffered 検索パターン

マッチした行とその前後の5行を表示

grep -C5 検索パターン ファイル名

🐝 よく使うオプション

オプション 意味
-i 大文字と小文字を区別しない
-v 一致しないものを検索する
-n 検索結果に行番号を表示する
-l ファイル名のみを検索する
-r ディレクトリ内も検索対象にする
-C数字 マッチした行の前後x行を表示

🐹 応用例

Shellでのワイルドカードの利用

引数のワイルドカード展開を行う場合は、シングルクオートで囲みます。

grep '$VERBOSE' /etc/init.d/*
/etc/init.d/boologd: ...

ダブルクオートで囲んだ文字列は変数の展開が行われた後に、コマンドに渡されます。

grep $HOME /etc/passwd
user:x:1028:200:TEST User,,,:/home/user:/bin/tcsh

🗽 参考リンク

📚 おすすめの書籍

🖥 サーバについて

このブログでは「Cloud Garage」さんのDev Assist Program(開発者向けインスタンス無償提供制度)でお借りしたサーバで技術検証しています。 Dev Assist Programは、開発者や開発コミュニティ、スタートアップ企業の方が1GBメモリのインスタンス3台を1年間無料で借りれる心強い制度です!(有償でも1,480円/月と格安)