grep - 文字列検索やパターンマッチしたファイル検索をする

grepコマンドは、ファイルの中にあるパターンにマッチした行を検索するときに使います。他にも、オプションを付けることで逆にパターンにマッチしなかった行を表示することも可能です。

grepとは

パターンにマッチした行を検索するコマンドです。利用用途として、プログラムの変数や関数の検索を行ったり、長いテキストファイルからフィルターとして行を抜き出すなどがあります。

grepコマンドの構文

grepコマンドの構文

オプション:0個以上のオプションをつけることができます。

パターン:'-e パターン' または '-f ファイル名'でパターンを指定する場合、必要ありません。

入力ファイル:0個以上の入力ファイルを指定できます。

コマンド例の想定

検索するファイルの例として、以下のような「apple」、「onion」、「yuzu」の重複順列でできたテキストファイルを想定します。

itemtext.txt ▼表示

パターンにマッチした行を抽出

itemtext.txtに書かれているappleのある行がすべて抽出されます。

コマンド例

itemtext.txt ▼表示

実行結果 ▼表示

端末(terminal)によってはcolorのオプションをつけると抽出したパターンが色付けされて、より分かりやすくなります。
例えば、

とするとappleという単語に色がついて、どこにappleという単語があるかがわかりやすくなります。

大文字と小文字を区別しない
(-iオプション)

-iオプションは、パターンの大文字と小文字を区別しないようになります。
どのような文字かだけがわかっている場合に利用することができます。
apt-cacheコマンドなどでパッケージを検索するときやシステム情報等を検索するときなどに便利です。
コマンド例では、sedコマンドで行の2番目にあるappleを大文字にしています。

コマンド例

itemtext.txt ▼表示

実行結果 ▼表示

複数のパターンを指定
(-eオプション)

-eオプションで指定するパターンを明示することができます。
また、-eオプションは複数つけることができ、複数つけると一致したパターンのいずれかが含まれていたら、その行が抽出されます。

コマンド例

itemtext.txt ▼表示

実行結果 ▼表示

複数のパターンをファイルで指定
(-fオプション)

-fオプションは複数のパターンはファイルによっても指定できます。
パターンの書き方は指定するパターンを一行ずつに分けて書きます。

コマンド例

pattern.txt

itemtext.txt ▼表示

実行結果 ▼表示

マッチしない行を抽出
(-vオプション)

-vオプションによって、appleに一致しない行が抽出されます。
余分なものをフィルタするときによく使われ、パイプなどで次のコマンドに渡す出力を制限するときに便利です。

コマンド例

itemtext.txt ▼表示

実行結果

行がパターンにそのまま一致する行を抽出
(-xオプション)

-xオプションは、行がパターンにそのまま一致するときにその行を抽出します。パターンの指定で正規表現で^と$でパターンを囲んだもの("^pattern$"のようなもの)と同じになります。

コマンド例

itemtext.txt ▼表示

実行結果 なし

別の例を出すと、以下のようになります。

コマンド例

x_opt.txt

実行結果

-xオプションはほかのコマンドと組み合わせて利用できます。
例えば、itemtext.txtの3列目にあるappleとyuzuの数を数えるとします。
それは、以下のようなコマンドで数えることができます。

コマンド例


または、一行、すなわちワンライナーで入力すると

実行結果