クリップボードにコピーしました!
文字列のgrep

grepの複数条件を徹底解説|検索効率を高める基本と実践テクニック

updated: 2026/05/22 created: 2026/05/22

はじめに

grepコマンドは、LinuxやMacのターミナル操作で欠かせない検索コマンドです。

特に複数の条件を組み合わせることで、ログ解析や設定確認を効率化できます。

本記事では、grepコマンドで複数条件を扱うための基本から実践的な使い方までをわかりやすく解説します。

参考:GNU grep

grepコマンドで複数条件を基本構文で指定する方法

ファイル作成

cat << 'EOF' > input.txt apple orange banana apple grape banana lemon orange melon apple banana orange EOF

実行コマンド

grep 'apple.*banana\|banana.*apple' input.txt

実行結果

apple orange banana
apple banana orange

実行コマンド

grep 'apple' input.txt | grep 'orange'

実行結果

apple orange banana
apple banana orange

仕組み

方法 コマンド例 仕組み
OR条件 grep 'apple.*banana|banana.*apple' input.txt |で複数条件を指定し、appleの後にbanana、またはbananaの後にappleがある行を抽出
AND条件 grep 'apple' input.txt | grep 'orange' パイプでgrepを連結し、appleを含みさらにorangeを含む行を抽出

解説

grepコマンドでは、\|を使うことでOR条件を指定できます。

AND条件はパイプでgrepを連結するとシンプルに実現できます。

grepコマンドで複数条件を1行で記述する方法

ファイル作成

cat << 'EOF' > input.txt apple red apple green banana yellow grape purple apple yellow banana green EOF

実行コマンド

grep -E 'apple|yellow' input.txt

実行結果

apple red
apple green
banana yellow
apple yellow

実行コマンド

grep 'apple' input.txt | grep 'yellow'

実行結果

apple yellow

仕組み

方法 コマンド 内容
OR条件 grep -E 'apple|yellow' input.txt apple または yellow を含む行を検索
AND条件 grep 'apple' input.txt | grep 'yellow' apple と yellow の両方を含む行を検索
拡張正規表現 -E 複数条件を正規表現で扱えるようにする

解説

grep は -E を使うことで複数条件を1行で簡潔に記述できます。

AND条件はパイプで grep を連結すると実現できます。

grepコマンドで複数条件のOR検索を行う方法

ファイル作成

cat << 'EOF' > input.txt apple banana orange grape apple pie banana split EOF

実行コマンド

grep -E 'apple|banana' input.txt

実行結果

apple
banana
apple pie
banana split

実行コマンド

grep -e 'apple' -e 'banana' input.txt

実行結果

apple
banana
apple pie
banana split

仕組み

方法 内容
grep -E 'apple|banana' -Eで拡張正規表現を有効にし、|でOR条件を指定
grep -e 'apple' -e 'banana' -eを複数指定してOR検索を実現

解説

grepでは複数条件をOR検索することで、複数キーワードを一度に検索できます。

-Eと-eのどちらもよく使われるため、用途に応じて使い分けます。

grepコマンドで複数条件のAND検索を行う方法

ファイル作成

cat << 'EOF' > input.txt apple orange banana apple grape orange lemon apple orange banana lemon EOF

実行コマンド

grep "apple" input.txt | grep "orange"

実行結果

apple orange banana
apple orange

仕組み

仕組み 内容
1つ目のgrep grep "apple" で apple を含む行を抽出
パイプ| 1つ目のgrepの結果を次のgrepへ渡す
2つ目のgrep grep "orange" でさらに orange を含む行を抽出
AND検索 両方の条件に一致した行のみ表示される

解説

grep はパイプを組み合わせることで複数条件のAND検索を実現できます。

複数キーワードを段階的に絞り込めるため、ログ解析やテキスト検索で便利です。

grepコマンドで複数条件のNOT検索を行う方法

ファイル作成

cat << 'EOF' > input.txt apple orange banana apple grape melon banana lemon peach orange melon kiwi grape peach apple EOF

実行コマンド

grep -vE 'apple|banana' input.txt

実行結果

orange melon kiwi

仕組み

項目 内容
grep テキスト検索を行うコマンド
-v 条件に一致しない行を表示(NOT検索)
-E 拡張正規表現を使用
apple|banana apple または banana を含む行を条件指定
処理内容 apple と banana を含む行を除外して表示

解説

grep -vE を使うことで、複数条件のNOT検索を簡潔に実現できます。

| を利用したOR条件と -v の組み合わせがポイントです。

grepコマンドで複数条件を-eオプションで複数指定する方法

ファイル作成

cat << 'EOF' > input.txt apple orange banana grape apple lemon banana melon peach orange kiwi apple EOF

実行コマンド

grep -e "apple" -e "banana" input.txt

実行結果

apple orange banana
grape apple lemon
banana melon peach
orange kiwi apple

実行コマンド

grep -e "orange" -e "grape" input.txt

実行結果

apple orange banana
grape apple lemon
orange kiwi apple

仕組み

項目 内容
grep ファイル内から文字列を検索するコマンド
-e 検索条件を指定するオプション
複数指定 -e を複数書くことで OR 条件検索になる
対象ファイル input.txt の内容を検索

解説

grep -e を複数使うことで、複数条件をまとめて検索できます。
OR条件で文字列検索したい場合によく利用される方法です。

grepコマンドで複数条件を-Eオプションで拡張正規表現検索する方法

ファイル作成

cat << 'EOF' > input.txt apple banana orange apple pie banana split grape EOF

実行コマンド

grep -E 'apple|banana' input.txt

実行結果

apple
banana
apple pie
banana split

実行コマンド

grep -E '^apple|split$' input.txt

実行結果

apple
apple pie
banana split

仕組み

項目 内容
grep テキスト検索を行うコマンド
-E 拡張正規表現を有効化
apple|banana apple または banana に一致
^apple apple で始まる行を検索
split$ split で終わる行を検索

解説

grep -E を使うことで、OR条件をシンプルに記述できます。

複数条件検索では | や ^ $ を組み合わせると柔軟な抽出が可能です。

grepコマンドで複数条件を正規表現パターンで柔軟に検索する方法

ファイル作成

cat << 'EOF' > input.txt ERROR: database connection failed INFO: user login success WARNING: disk space low ERROR: timeout occurred DEBUG: cache refreshed INFO: backup completed WARNING: memory usage high EOF

実行コマンド

grep -E 'ERROR|WARNING' input.txt

実行結果

ERROR: database connection failed
WARNING: disk space low
ERROR: timeout occurred
WARNING: memory usage high

実行コマンド

grep -E 'ERROR.*timeout|INFO.*backup' input.txt

実行結果

ERROR: timeout occurred
INFO: backup completed

実行コマンド

grep -E '^(ERROR|INFO)' input.txt

実行結果

ERROR: database connection failed
INFO: user login success
ERROR: timeout occurred
INFO: backup completed

仕組み

項目 内容
grep -E 拡張正規表現を利用する
| OR条件を指定する
.* 任意の文字列を表現する
^ 行頭一致を表現する
( ) 条件をグループ化する

解説

grep -E を使うことで、複数条件を柔軟に組み合わせた検索が可能です。
ログ解析や特定パターン抽出で非常に便利な方法です。

grepコマンドで複数条件をパイプと組み合わせて絞り込む方法

ファイル作成

cat << 'EOF' > input.txt ERROR user01 login failed INFO user02 login success ERROR user03 timeout WARN user01 disk usage high ERROR user02 login failed INFO user03 logout EOF

実行コマンド

grep "ERROR" input.txt | grep "failed"

実行結果

ERROR user01 login failed
ERROR user02 login failed

実行コマンド

grep "ERROR" input.txt | grep "user02"

実行結果

ERROR user02 login failed

実行コマンド

grep -E "ERROR|WARN" input.txt | grep "user01"

実行結果

ERROR user01 login failed
WARN user01 disk usage high

仕組み

コマンド 仕組み
grep "ERROR" input.txt | grep "failed" 1回目のgrepでERROR行を抽出し、2回目でfailedを含む行だけに絞り込む
grep "ERROR" input.txt | grep "user02" ERRORを含む行からさらにuser02を含む行を抽出する
grep -E "ERROR|WARN" input.txt | grep "user01" -EでOR条件を使い、ERRORまたはWARNを取得後、user01を含む行に限定する

解説

grepコマンドはパイプ(|)を組み合わせることで、複数条件を段階的に絞り込めます。
ログ解析やエラー調査で非常によく使われる実践的な方法です。

grepコマンドで複数条件を-fオプションで一括管理する方法

ファイル作成

cat << 'EOF' > input.txt ERROR: database connection failed INFO: user login success WARNING: disk usage high ERROR: timeout occurred INFO: batch process completed WARNING: memory usage high EOF

ファイル作成

cat << 'EOF' > patterns.txt ERROR WARNING EOF

実行コマンド

grep -f patterns.txt input.txt

実行結果

ERROR: database connection failed
WARNING: disk usage high
ERROR: timeout occurred
WARNING: memory usage high

仕組み

項目 内容
grep テキスト検索を行うコマンド
-f patterns.txt 検索条件をファイルから一括読み込み
patterns.txt 複数の検索キーワードを1行ずつ記載
input.txt 検索対象のファイル

解説

grep -f を利用すると、複数条件を別ファイルで管理できるため、条件追加やメンテナンスが容易になります。
大量の検索パターンを扱う場合にも可読性が高く、実務でよく利用される方法です。

grepコマンドで複数条件検索時に完全一致検索する方法

ファイル作成

cat << 'EOF' > input.txt apple apple pie banana grape pineapple apple EOF

実行コマンド

grep -E '^apple$|^banana$' input.txt

実行結果

apple
banana
apple

実行コマンド

grep -wE 'apple|banana' input.txt

実行結果

apple
apple pie
banana
apple

仕組み

方法 コマンド 仕組み
完全一致検索 grep -E '^apple$|^banana$' input.txt ^は行頭、$は行末を表し、appleまたはbananaと完全一致する行のみを検索します。
単語一致検索 grep -wE 'apple|banana' input.txt -wオプションにより単語単位で一致判定を行い、apple pieのような行も検索対象になります。

解説

grepで複数条件を完全一致検索する場合は、^と$を使う方法が最も確実です。

単語単位で十分な場合は、-wオプションを使うことで簡潔に記述できます。

grepコマンドで複数条件検索時に一致件数をカウントする方法

ファイル作成

cat << 'EOF' > input.txt error: database connection failed info: user login success warning: disk usage high error: timeout occurred info: backup completed warning: memory usage high error: invalid request EOF

実行コマンド

grep -E 'error|warning' input.txt

実行結果

error: database connection failed
warning: disk usage high
error: timeout occurred
warning: memory usage high
error: invalid request

実行コマンド

grep -E 'error|warning' input.txt | wc -l

実行結果

5

仕組み

コマンド 仕組み
grep -E 'error|warning' input.txt errorまたはwarningを含む行を検索
wc -l grepの検索結果行数をカウントして一致件数を表示

解説

grep -Eを使うことで複数条件を簡潔に記述できます。

wc -lと組み合わせると一致件数を効率よく確認できます。

grepコマンドで複数条件検索時に複数ファイルを対象にする方法

ファイル作成

cat << 'EOF' > file1.txt error: connection failed info: retry started warning: timeout detected error: disk full EOF

ファイル作成

cat << 'EOF' > file2.txt info: process started warning: memory usage high error: permission denied success: completed EOF

実行コマンド

grep -E 'error|warning' file1.txt file2.txt

実行結果

file1.txt:error: connection failed
file1.txt:warning: timeout detected
file1.txt:error: disk full
file2.txt:warning: memory usage high
file2.txt:error: permission denied

実行コマンド

grep -e 'error' -e 'warning' file1.txt file2.txt

実行結果

file1.txt:error: connection failed
file1.txt:warning: timeout detected
file1.txt:error: disk full
file2.txt:warning: memory usage high
file2.txt:error: permission denied

仕組み

項目 内容
-E 拡張正規表現を利用して error|warning のような複数条件を指定
-e 検索条件を複数定義できるオプション
file1.txt file2.txt 複数ファイルを同時に検索対象に指定
出力形式 ファイル名:一致した行 の形式で表示

解説

grep は複数ファイルを同時に検索でき、条件も柔軟に追加できます。

-E と -e を使い分けることで、複数条件検索を効率的に実行できます。

grepコマンドで複数条件検索を再帰的に実行する方法

ファイル作成

cat << 'EOF' > input.txt server=web01 status=active region=tokyo server=web02 status=inactive region=osaka server=db01 status=active region=tokyo server=app01 status=active region=nagoya server=db02 status=inactive region=tokyo EOF

実行コマンド

grep -rE 'active.*tokyo|tokyo.*active' .

実行結果

./input.txt:server=web01 status=active region=tokyo
./input.txt:server=db01 status=active region=tokyo
./input.txt:server=db02 status=inactive region=tokyo

実行コマンド

grep -r 'active' . | grep 'tokyo'

実行結果

./input.txt:server=web01 status=active region=tokyo
./input.txt:server=db01 status=active region=tokyo
./input.txt:server=db02 status=inactive region=tokyo

仕組み

項目 内容
grep -r ディレクトリ配下を再帰的に検索
-E 拡張正規表現を利用
active.*tokyo activeの後にtokyoを含む行を検索
tokyo.*active tokyoの後にactiveを含む行を検索
grep 'active' | grep 'tokyo' パイプで複数条件をAND検索

解説

grep -r を使うことでサブディレクトリも含めて検索できます。

複数条件は正規表現またはパイプを使うことで柔軟に指定可能です。

grepコマンドで複数条件検索時によくあるミスと注意点

ファイル作成

cat << 'EOF' > input.txt ERROR: disk full INFO: service started WARNING: high memory usage ERROR: permission denied INFO: backup completed WARNING: cpu temperature high EOF

実行コマンド

grep -E 'ERROR|WARNING' input.txt

実行結果

ERROR: disk full
WARNING: high memory usage
ERROR: permission denied
WARNING: cpu temperature high

実行コマンド

grep 'ERROR|WARNING' input.txt

実行結果

(結果なし)

実行コマンド

grep -e 'ERROR' -e 'WARNING' input.txt

実行結果

ERROR: disk full
WARNING: high memory usage
ERROR: permission denied
WARNING: cpu temperature high

仕組み

コマンド 仕組み よくあるミス 注意点
grep -E 'ERROR|WARNING' -Eで拡張正規表現を有効化し、OR検索を実施 -Eを付け忘れる
grep 'ERROR|WARNING' 通常正規表現として処理 OR検索になると思い込む
grep -e 'ERROR' -e 'WARNING' 条件を複数指定して検索 -eを省略して複数条件を書こうとする 可読性が高く安全に複数条件を書ける

解説

grepで複数条件検索をする場合、-Eの付け忘れが非常に多いです。
安全に書きたい場合は-eを複数使う方法も実務ではよく利用されます。

grepコマンドで複数条件検索を業務で活用する具体例

ファイル作成

cat << 'EOF' > input.txt 2026-05-01 INFO User login success 2026-05-01 ERROR Database connection failed 2026-05-02 WARN Disk usage 85% 2026-05-02 ERROR Timeout occurred 2026-05-03 INFO Backup completed 2026-05-03 ERROR Memory leak detected EOF

実行コマンド

grep -E 'ERROR|WARN' input.txt

実行結果

2026-05-01 ERROR Database connection failed
2026-05-02 WARN Disk usage 85%
2026-05-02 ERROR Timeout occurred
2026-05-03 ERROR Memory leak detected

実行コマンド

grep 'ERROR' input.txt | grep 'Timeout'

実行結果

2026-05-02 ERROR Timeout occurred

実行コマンド

grep -e 'ERROR' -e 'INFO' input.txt

実行結果

2026-05-01 INFO User login success
2026-05-01 ERROR Database connection failed
2026-05-02 ERROR Timeout occurred
2026-05-03 INFO Backup completed
2026-05-03 ERROR Memory leak detected

仕組み

コマンド 仕組み 用途
grep -E 'ERROR|WARN' 拡張正規表現でOR条件検索 複数種類のログ抽出
grep 'ERROR' | grep 'Timeout' パイプでAND条件検索 特定エラーの絞り込み
grep -e 'ERROR' -e 'INFO' -eで複数条件指定 条件追加がしやすい検索

解説

grepの複数条件検索は、障害解析やログ監視で頻繁に利用されます。
OR検索・AND検索を使い分けることで、必要な情報を効率よく抽出できます。

grepの複数条件検索を理解して効率的に活用するポイント

grepで複数条件を扱えるようになると、単純な文字列検索だけでなく、必要な情報だけを素早く抽出できるようになります。

OR検索やAND検索、NOT検索を使い分けることで、検索精度を高められます。

基本構文を一つずつ確認しながら試すことが重要です。

grepコマンドの複数条件検索を習得することで、日々の業務効率を大きく向上できます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

©︎ 2025-2026 running terminal commands