【Linuxコマンド】grepでファイル内の文字列検索

Linuxコマンド「grep」でファイル内の文字列を検索する方法についてまとめました。

ファイル内の文字列検索

grepコマンドは、ファイル内の文字列を検索できます。

grep [オプション] '検索文字列' ファイル名
オプション 説明
-i 大文字小文字を区別しない
-v 指定した文字列を含まない行のみ表示
-n 行番号を付けて表示
-c 表示した総行数を表示
-l マッチしたファイルのファイル名のみ表示
-o 一致した部分のみ表示(このオプションなしだと行全体を表示
-h ファイル名を表示しない
-e パターン パターン(正規表現)を指定(これがない場合は最初のパラメータがパターンになる)
-r ディレクトリを再帰的にたどって検索
-A 行数 一致した行の後も指定した行数を表示
-B 行数 一致した行の前も指定した行数を表示
-C 行数 一致した行の前後も指定した行数を表示
-E 拡張正規表現を使用
-L 一致しなかったファイルのファイル名を表示
-H 検索結果の出力にファイル名を付加
主なパターン 意味
^ 行先頭の文字列に一致 ^xyz → xyzで始まる全ての行に一致
行末尾の文字列に一致 xyz$ → xyzで終わる全ての行に一致
. 1文字に一致 ^x . . z → xで始まり、任意の2文字、次にzが続く文字を含む行に一致
[] 集合の1つに一致 [Xx]yz → Xyzもしくはxyzを含む行に一致」
[ ^ ] 集合中にない文字に一致 [^X-Z]abc → XからZ以外の文字の後ろにabcを含む行に一致
* 直前の文字の0個以上の繰り返しに一致 ^x*yz → パターンyzの前に0個以上のxを持つ行に一致

※参考:【正規表現】指定例と一覧表

【実行例】5で終わる行を表示

コマンドの実行例です。

grep '$5' file.txt

「file.txt」内の5で終わる行を表示します。

【実行例】ファイル内のコメント行をカウント

「file.py」というテキストファイル内のコメント行(#で始まる行)をカウントするコマンドは以下のとおり。

grep -c ^# file.py

grepコマンドは、-cオプションで検索パターンにマッチした行の行数を表示できます。
「^」は行頭を表す正規表現で、「#で始まる行」を検索パターンは「^#」になります。

-cオプションを使わない場合、以下のコマンドでも可能です。

grep ^# file.py | wc -l

grepコマンドの抽出結果をパイプ(|)でwcコマンドに渡しています。
「wc -l」は抽出した行の数をカウントします。

関連ページ

【Linux】grep、egrep、fgrepの違い
Linuxにおけるgrep、egrep、fgrepの違いについてまとめました。
LinuCの試験対策と例題まとめ
LinuCの試験対策と例題(学習サイト)についてまとめました。
LPICの試験対策と例題まとめ
LPICの試験対策と例題(学習サイト)についてまとめました。
【Linux超入門】システムの基礎とよく使うコマンドなど徹底解説
Linuxシステムの基礎とよく使うコマンドなどについて入門者向けに解説します。

コメント