記事最終更新日:2017年08月20日
記事投稿日:2017年03月21日
閲覧数:5978 views
grepコマンドの使い方メモ -【Unix&Linux&Mac】
はじめに
今回のD.M.C.【デベメモドットコム】の記事は「grepコマンドの使い方」ということで、LinuxやMacなどUnix系列のOSで使用される「grepコマンド」について、使い方や各種オプションなどの組み合わせを詳しくメモ(解説)していきます。
はじめに「grepコマンド」で何ができるのかというと、簡単に説明するとはファイルの中身の文字列に対して検索をして表示するコマンドです。
ファイルの中身の文字列を検索して表示するといっても基本的な使い方から様々なオプションを組み合わせることによって、たくさんの事が出来るので基本的な使い方からオプションの組み合わせまで、この記事では詳しく解説していけたらと思います。
基本的な使い方
まずは「grepコマンド」の基本的な使い方を解説していきます。
第一引数は検索したい文字列を指定して、第二引数で検索対象のファイルを指定をします。
$ grep "検索文字列" filename
「-i」オプションで大文字・小文字を区別せずに検索する
「-i」オプションを指定する事によって大文字・小文字を区別せずに検索する事も出来ます。
第一引数に「-i」オプションを指定して続けて検索文字列、ファイル名を指定します。
$ grep -i "検索文字列" filename
ファイル内の文字列を検索する時は、どうしても記憶が曖昧なな時が多いと思うので、大文字・小文字を区別せずに検索できるのは凄く便利だと思います。
「-n」オプションで行番号を表示する
検索したファイル内のマッチした行番号を一緒に結果として表示させる事も出来ます。
第一引数に「-n」オプションを指定して続けて検索文字列、ファイル名を指定します。
$ grep -n "検索文字列" filename
ファイル編集をする時に素早くその場所に移動したい時や、的確に場所を把握したい時なんかには「-n」オプションは凄く使えると思います。
「-l」オプションでファイル名のみ表示する
検索結果にマッチした行は表示せずに、ファイル名のみ表示させる事も出来ます。
第一引数に「-l」オプションを指定して続けて検索文字列、ファイル名を指定します。
$ grep -l "検索文字列" filename
大量のファイルに対して検索してマッチした結果の文字列を表示すると、少し見づらくわかりづらい時があったりするので素早くファイル名だけ知りたい時なんかは「-l」オプションは重宝すると思います。
「-h」オプションでファイル名を表示しない
ファイル名を表示させないようにする事も出きます。
$ grep -h "検索文字列" filename
特定のファイルに対してのみ検索している場合は、どのファイルに対して検索しているのかは事前にわかっているので、要らない情報は表示させたくない場合は使えると思います。
$ find . -name "*.html" -and -type f
「-L」オプションで検索に一致しなかったファイル名を表示する
「-L」オプションを指定する事によって一致しなかったファイル名を表示する事も出来ます。
$ grep -L "検索文字列" filename
検索文字列を含まないファイルを探したい時は「-L」オプションが便利です。
「-e」「-E」オプションとパイプでOR(または)条件検索する
「grepコマンド」は条件を複数指定して検索する事も出来ます。
その際はダブルクオーテーションで囲み、パイプをエスケープしながら複数文字列を指定します。
この時にエスケープを忘れないように注意が必要です。
$ grep "検索文字列\|検索文字列" filename
また別のやり方としては「-e」オプションを指定する事によって複数条件を指定する事もでき、その際は「-e」オプションに対して検索文字列を一対一のように指定します。
$ grep -e "検索文字列" -e "検索文字列" filename
他にも「-E」オプションで複数条件を指定する事も出来ます。
ダブルクオーテーションで囲み検索文字列を指定してバイプを使うところまでは、はじめに紹介した方法と同じなのですが、「-E」オプションだとパイプに対してのエスケープがいらずに検索できます。
$ grep -E "検索文字列|検索文字列" filename
こちらの方が直感的にはわかりやすいと思います。
パイプでAND(かつ)条件検索する
「grepコマンド」はもちろんAND(かつ)条件指定して検索する事も出来ます。
AND(かつ)検索の際はgrepを二つパイプで繋ぐことで検索できます。
$ grep "検索文字列" | grep "検索文字列" filename
AND(かつ)検索もOR(または)検索と同様、使用頻度は凄く多いと思うので覚えておくといいと思います。
「-v」オプションでNOT(除外)して検索する
除外したい文字列を指定して検索したい場合は「-v」オプションを指定してNOT(除外)して検索します。
第一引数に「-v」オプションを指定して、続けて除外したい文字列、そしてファイルを指定します。
$ grep -v "検索文字列" filename
「-o」オプションで一致した文字列を表示する
一致した文字列のみ結果に表示させる事もできます。
「grepコマンド」はマッチした文字列がある行を結果として返しますが、行ではなくマッチした文字列のみを表示させたい場合は「-o」オプションを指定します。
$ grep -o "検索文字列" filename
「-r」オプションでディレクトリ内も検索する
「-r」オプションを指定する事によって下層にあるサブディレクトリを含めてディレクトリ内のファイルも検索する事ができます。
$ grep -r "検索文字列" directoryname
「-C」オプションで一致した文字列の行の前後を出力する
一致した文字列の行の前後を表示させる事もできます。
第一引数に「-C」オプションを指定して続けて前後に出力したい行数を数値で指定します。
そして検索文字列とファイルを指定します。
$ grep -C 2 "検索文字列" filename
「-B」オプションで一致した文字列の行の前を出力する
一致した文字列の行の前を表示させる事もできます。
第一引数に「-B」オプションを指定して続けて前に出力したい行数を数値で指定します。
そして検索文字列とファイルを指定します。
$ grep -B 2 "検索文字列" filename
「-A」オプションで一致した文字列の行の後を出力する
一致した文字列の行の後を表示させる事もできます。
第一引数に「-A」オプションを指定して続けて後に出力したい行数を数値で指定します。
そして検索文字列とファイルを指定します。
$ grep -A 2 "検索文字列" filename
「-c」オプションで一致した行数を出力する
一致した文字列の行数を表示させる事もできます。
第一引数に「-c」オプションを指定して続けて検索文字列とファイルを指定します。
$ grep -c "検索文字列" filename
「-w」オプションで単語検索をする
「-w」オプションを指定する事によって紛らわしい単語を排除して検索する事も出来ます。
第一引数に「-w」オプションを指定して続けて検索文字列とファイルを指定します。
$ grep -w "検索文字列" filename
grepコマンドオプション一覧
grepコマンドオプションのまとめ一覧
-i | 大文字・小文字を区別せずに検索する |
---|---|
-n | 行番号を表示する |
-l | ファイル名のみ表示する |
-h | ファイル名を表示しない |
-L | 検索に一致しなかったファイル名を表示する |
-e | OR(または)条件検索する |
-E | OR(または)条件検索する |
-v | NOT(除外)して検索する |
-o | 一致した文字列を表示する |
-r | ディレクトリ内も検索する |
-C | 一致した文字列の行の前後を出力する |
-B | 一致した文字列の行の前を出力する |
-A | 一致した文字列の行の後を出力する |
-c | 一致した行数を出力する |
-w | 単語検索をする |
感想
今回紹介した「grepコマンド」は単体でも十分便利ですが、以前に紹介した「findコマンドの使い方」)やsedコマンドなどと組み合わせると使い勝手が良くなるので凄くオススメで、sedコマンドについてはまた紹介したいと思います。
では最後まで読んでいただき、ありがとうございました。
About / ブログについて
D.M.C.【デベメモドットコム】はWEB制作に関することを中心に、
その他、関連する事まで出来るだけわかりやすく備忘録としてメモを残していくブログです。
このブログを通して少しでも為になる情報を発信して皆さんと共有できればとても嬉しいです。