grep
grepは、行単位で文字列を検索するコマンドです。
該当行に指定した文字列が含まれる場合にその行を表示します。
主にパイプラインを使用して、あるコマンドの出力結果に対してgrepを使用したりします。
以下は、netstatの出力結果に、ESTBLISHEDという文字列が含まれる行のみを表示するコマンド例です。

netstat | grep ESTABLISHED
grep -i
grep -iコマンドは、指定した文字列の大文字小文字を区別せずに検索します。

grep -v
grep -vコマンドは、grepコマンドの逆で、指定した文字列が含まれない行を表示します。

ファイルを引数とする
今までファイル内をgrepする時は以下のようにcatコマンドの結果をパイプでつないでいました。

cat file_name | grep "検索文字列"

しかしこのようにすると、少し遅くなるようで、元々grepでは引数にファイルを指定することが出来るようです。
以下、例です。

grep "検索文字列" file_name
ディレクトリ配下のファイル全てからgrepする
ある文字列を、カレントディレクトリのファイル全てを対象としてgrepしたい場合

grep -lir 検索文字列 ./*
と実行します。こうすると対象ファイル名が出力されます。
また、対象ファイルとその行を出力したい場合は

grep -irw 検索文字列 ./*
と実行します。

jarファイル内をgrepする
jarのようなバイナリファイル内のclassファイルなどをgrepしたい場合

grep -R 'jp.co.confrage.Test' ./
と実行します。
Testクラスをカレントディレクトリ内にあるjarファイルから検索します。
一致するファイルが存在した場合、

バイナリー・ファイルは一致しましたと表示されて対象のファイル名が表示されます。

正規表現を使用して、すべてのファイルから特定行をgrepする
正規表現を使用して、grepする場合、オプション入らず、正規表現をシングルクォーテーションで囲みます。
以下は、一つのファイルからgrepする例と、カレントディレクトリのファイル全てをgrepする例です。

grep '^5...$' a.txt
grep '^5.$' ./*

Back to top

Information