Linux – grep コマンドの使い方について詳しく解説

概要

Linux の grep コマンドは、指定したパターンに一致するテキストを検索するための強力なツールです。 本記事では、 grep コマンドの使い方について詳しく解説します。

基本的な使い方

grep [OPTION] PATTERNS [FILE]
Bash

標準入力からパターンを検索する

標準入力からデータを受け取り、指定したパターンを検索します。 これは、パイプ (|) を使用して他のコマンドの出力をgrepコマンドに渡す場合に便利です。

echo "Hello, World!" | grep "Hello"
Bash

この例では、echoコマンドで出力された文字列 “Hello, World!” から “Hello” というパターンを検索します。

1 つのテキストファイルからパターンを検索する

特定のテキストファイル内で指定したパターンを検索します。

grep "pattern" sample.txt
Bash

この例では、sample.txtファイル内で “pattern” という文字列を含む行を検索します。

複数のテキストファイルからパターンを検索する

複数のテキストファイル内で指定したパターンを検索します。

grep "pattern" file1.txt file2.txt
Bash

この例では、file1.txtfile2.txt の両方のファイル内で “pattern” という文字列を含む行を検索します。

現在のディレクトリから再帰的にファイルを確認し、パターンを検索する

現在のディレクトリおよびそのサブディレクトリ内のすべてのファイルを再帰的に検索し、指定したパターンを見つけます。

grep -r "pattern" .
Bash

この例では、現在のディレクトリ (.) およびそのサブディレクトリ内のすべてのファイルから “pattern” という文字列を含む行を再帰的に検索します。

オプションの一覧

パターンを指定する

オプション 説明
-E, --extended-regexp 拡張正規表現を使用
-F, --fixed-strings 固定文字列を使用
-G, --basic-regexp 基本正規表現を使用
-P, --perl-regexp Perl の正規表現を使用
-e, --regexp=PATTERNS PATTERNS を使用してマッチング
-f, --file=FILE FILE から PATTERNS を読み込む
-i, --ignore-case 大文字小文字を区別しない
--no-ignore-case 大文字小文字を区別する (デフォルト)
-w, --word-regexp 単語全体でマッチ
-x, --line-regexp 行全体でマッチ
-z, --null-data ヌル文字を行の終わりとして解釈する
-v, --invert-match 一致しない行を選択する

出力に関するオプション

オプション 説明
-m, --max-count=NUM NUM 行一致した場合中断する
-b, --byte-offset 出力行と併せてバイトオフセットを表示する
-n, --line-number 出力行と併せて行番号を表示する
--line-buffered 行ごとに出力をフラッシュする
-H, --with-filename 出力行と併せてファイル名を表示する
-h, --no-filename 出力の先頭にファイル名を付けない
--label=LABEL 標準入力のファイル名の接頭辞として LABEL を使用する
-o, --only-matching 一致した部分のみを表示する
-q, --quiet, --silent 通常の出力を抑制する
--binary-files=TYPE バイナリファイルを TYPE として扱う (binary, text, without-match)
-a, --text –binary-files=text と等価
-I –binary-files=without-match と等価
-d, --directories=ACTION ディレクトリの扱い方を指定する (read, recurse, skip)
-D, --devices=ACTION デバイス、FIFO、ソケットの扱い方を指定する (read, skip)
-r, --recursive –directories=recurse と等価
-R, --dereference-recursive –directories=recurse だがシンボリックリンクを解決する
--include=GLOB GLOB に一致するファイルのみ検索する
--exclude=GLOB GLOB に一致するファイルをスキップする
--exclude-from=FILE FILE に記載されたファイルパターンに一致するファイルをスキップする
--exclude-dir=GLOB GLOB に一致するディレクトリをスキップする
-L, --files-without-match PATTERN に一致しない FILE の名前のみ表示する
-l, --files-with-matches PATTERN に一致する FILE の名前のみ表示する
-c, --count FILE ごとに一致した行数のみ表示する
-T, --initial-tab タブを使用して整列する
-Z, --null FILE の名前を表示した後に値がヌル文字を出力する
-s, --no-messages エラーメッセージを抑止する

前後の表示に関するオプション

オプション 説明
-B, --before-context=NUM 一致した前の NUM 行を表示する
-A, --after-context=NUM 一致した後の NUM 行を表示する
-C, --context=NUM 一致した前後 NUM 行を表示する
-NUM –context=NUM と同じ
--group-separator=SEP 一致した行の間に SEP を挿入する
--no-group-separator 一致した行の間に区切りを挿入しない
--color[=WHEN], --colour[=WHEN] 一致した部分をハイライト表示する (always, never, auto)
-U, --binary 行末の CR 文字を取り除かない

コメント

コメントする