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

grepの反転一致を徹底解説

updated: 2026/06/15 created: 2026/06/15

はじめに

grepはLinuxやUnix系環境で広く利用される検索コマンドです。

通常は特定の文字列に一致する行を抽出しますが、反転一致を利用すると一致しない行だけを取り出せます。

本記事では、grepの反転一致の基本から応用までをわかりやすく解説します。

参考:GNU grep

grepの反転一致とは?一致しない行を抽出する基本

ファイル作成

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

実行コマンド

grep -v "apple" input.txt

実行結果

banana
orange
grape
melon

実行コマンド

grep -vi "apple" input.txt

実行結果

banana
orange
grape
melon

実行コマンド

grep -vE "apple|orange" input.txt

実行結果

banana
grape
melon

仕組み

オプション 仕組み 抽出結果
grep -v "apple" apple に一致しない行のみ表示 appleを含まない行
grep -vi "apple" -vで反転一致、-iで大文字小文字を無視 APPLEやappleを除外
grep -vE "apple|orange" -Eで拡張正規表現を使用し、複数パターンを反転一致 appleまたはorange以外の行

解説

grep の反転一致は -v オプションで実現できます。
特定の文字列に一致しない行だけを抽出できるため、ログ解析や不要データの除外によく利用されます。

grepの反転一致で利用する-vオプションの仕組み

ファイル作成

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

実行コマンド

grep -v "apple" input.txt

実行結果

orange
banana
grape

仕組み

項目 内容
オプション -v
動作 検索パターンに一致した行を除外する
通常のgrep 一致した行のみ表示
grep -v 一致しない行のみ表示
利用例 不要なログや特定文字列を除外して表示する

解説

grep -v は反転一致(invert match)を行うオプションです。

指定したパターンに一致する行を除外し、一致しない行だけを出力するため、ログ解析や不要データの除外によく利用されます。

grepの反転一致で特定の文字列に一致しない行を抽出する方法

ファイル作成

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

実行コマンド

grep -v "banana" input.txt

実行結果

apple
orange
grape
melon

実行コマンド

grep -v "apple" input.txt

実行結果

banana
orange
grape
banana smoothie
melon

仕組み

項目 内容
コマンド grep -v "文字列" ファイル名
-v オプション 一致しない行を表示する(反転一致)
一致した行 出力対象から除外される
一致しない行 出力される
主な用途 特定のログや不要なデータを除外して抽出

解説

grep -v を使用すると、指定した文字列に一致する行を除外して表示できます。
ログ解析や不要な行を取り除きたい場合によく利用される grep の反転一致オプションです。

grepの反転一致で複数パターンに一致しない行を抽出する方法

ファイル作成

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

実行コマンド

grep -Ev 'apple|banana' input.txt

実行結果

orange
grape
melon

仕組み

オプション/構文 役割
grep テキストを検索するコマンド
-E 拡張正規表現を有効化し、| を使用できるようにする
-v 反転一致(一致しない行を抽出)
apple|banana apple または banana に一致する行を検索するパターン
input.txt 検索対象ファイル

解説

grep -v を使うと一致した行を除外できます。

-E と | を組み合わせることで、複数パターンのいずれにも一致しない行だけを効率よく抽出できます。

grepの反転一致で正規表現に一致しないデータを検索する方法

ファイル作成

cat << 'EOF' > input.txt apple banana error.log warning.log data.csv sample.txt EOF

実行コマンド

grep -vE '.log$' input.txt

実行結果

apple
banana
data.csv
sample.txt

仕組み

項目 内容
grep テキスト検索を行うコマンド
-v 反転一致(正規表現に一致しない行を表示)
-E 拡張正規表現を使用
\.log$ .logで終わる行に一致
処理結果 .logに一致した行を除外して表示

解説

grep -v を使用すると、指定した正規表現に一致しないデータのみを抽出できます。

ログファイル名の除外や不要データのフィルタリングでよく利用される方法です。

grepの反転一致で完全一致を除外して検索する方法

ファイル作成

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

実行コマンド

grep -vx "apple" input.txt

実行結果

orange
banana
grape
apple pie

仕組み

オプション 説明
-v 条件に一致した行を除外する(反転一致)
-x 行全体がパターンと完全一致した場合のみ一致とみなす
grep -vx "apple" apple と完全一致する行だけを除外する
apple pie 完全一致ではないため除外されない

解説

grep の -v と -x を組み合わせることで、指定文字列との完全一致行のみを除外できます。部分一致は対象外となるため、似た文字列を残したまま検索結果を取得できます。

grepの反転一致で大文字・小文字を区別せず一致判定する方法

ファイル作成

cat << 'EOF' > input.txt Linux linux UNIX unix Windows WINDOWS MacOS EOF

実行コマンド

grep -iv "linux" input.txt

実行結果

UNIX
unix
Windows
WINDOWS
MacOS

仕組み

オプション 説明
grep テキスト検索コマンド
-i 大文字・小文字を区別せずに検索する
-v 一致した行を除外し、反転一致を行う
"linux" 検索パターン
input.txt 検索対象ファイル

解説

grep -iv を使用すると、指定した文字列に大文字・小文字を区別せず一致する行を除外できます。linux、Linux、LINUX などに一致する行をまとめて反転一致の対象にできます。

grepの反転一致でコメント行を除外して一致しないデータを抽出する方法

ファイル作成

cat << 'EOF' > input.txt # システム設定 server=web01 # 開発環境 env=dev env=stg # 本番環境 env=prod user=admin EOF

実行コマンド

grep -v '^#' input.txt

実行結果

server=web01
env=dev
env=stg
env=prod
user=admin

実行コマンド

grep -v '^#' input.txt | grep -v 'env=prod'

実行結果

server=web01
env=dev
env=stg
user=admin

仕組み

コマンド 役割
grep -v '^#' input.txt -v による反転一致でコメント行(#で始まる行)を除外する
grep -v 'env=prod' env=prod に一致する行を除外し、一致しないデータのみを抽出する
| パイプで前段の抽出結果を次の grep に渡す

解説

grep -v は反転一致を行い、指定したパターンに一致しない行だけを表示します。
コメント行を除外した後にさらに条件を追加することで、必要なデータのみを効率よく抽出できます。

grepの反転一致で複数ファイルから一致しない内容を検索する方法

ファイル作成

cat << 'EOF' > file1.txt apple orange banana grape EOF

ファイル作成

cat << 'EOF' > file2.txt melon apple peach banana EOF

ファイル作成

cat << 'EOF' > file3.txt kiwi mango orange lemon EOF

実行コマンド

grep -L "apple" file1.txt file2.txt file3.txt

実行結果

file3.txt

実行コマンド

grep -L -E "apple|banana" file1.txt file2.txt file3.txt

実行結果

file3.txt

実行コマンド

grep -h -v "apple" file1.txt file2.txt file3.txt

実行結果

orange
banana
grape
melon
peach
banana
kiwi
mango
orange
lemon

仕組み

オプション 役割 説明
-v 反転一致 指定したパターンに一致しない行を表示する
-L 非一致ファイル表示 指定したパターンを含まないファイル名のみ表示する
-E 拡張正規表現 apple|banana のような OR 条件を利用できる
-h ファイル名非表示 複数ファイル検索時にファイル名を出力しない

解説

grep の反転一致は -v を使用し、一致しない行を抽出できます。

複数ファイルからパターンを含まないファイルを検索する場合は -L が便利です。

grepの反転一致と再帰検索を組み合わせて一致しないデータを探す方法

ファイル作成

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

実行コマンド

grep -rv "apple" .

実行結果

./input.txt:banana
./input.txt:orange
./input.txt:grape
./input.txt:melon

仕組み

項目 内容
grep テキスト検索を行うコマンド
-v 反転一致(指定した文字列に一致しない行を表示)
-r ディレクトリ配下を再帰的に検索
"apple" 除外対象の文字列
. カレントディレクトリ以下を検索対象にする

解説

grep -v を使うと一致しない行だけを抽出できます。
さらに grep -r を組み合わせることで、ディレクトリ配下の複数ファイルから条件に一致しないデータを効率よく検索できます。

grepの反転一致で除外条件と検索条件を組み合わせて一致精度を高める方法

ファイル作成

cat << 'EOF' > input.txt ERROR: database connection failed INFO: service started ERROR: timeout occurred DEBUG: cache refreshed ERROR: disk full INFO: backup completed EOF

実行コマンド

grep "ERROR" input.txt

実行結果

ERROR: database connection failed
ERROR: timeout occurred
ERROR: disk full

実行コマンド

grep "ERROR" input.txt | grep -v "timeout"

実行結果

ERROR: database connection failed
ERROR: disk full

実行コマンド

grep "ERROR" input.txt | grep -v "timeout" | grep -v "disk"

実行結果

ERROR: database connection failed

仕組み

コマンド 役割
grep "ERROR" ERRORを含む行のみ抽出
grep -v "timeout" timeoutを含む行を除外(反転一致)
grep -v "disk" diskを含む行を除外(反転一致)
| 前段の検索結果を次のgrepへ渡す
検索条件 + 除外条件 必要な行だけを高精度で抽出できる

解説

grepの反転一致(-v)を利用すると、検索条件に一致した結果から不要なパターンを除外できます。
検索条件と除外条件を組み合わせることで、目的のログやデータを効率よく絞り込めます。

grepの反転一致でAND条件・OR条件を実現して一致しないデータを絞り込む方法

ファイル作成

cat << 'EOF' > input.txt apple banana orange grape apple_test banana_test orange_test error_log debug_log EOF

実行コマンド

grep -v 'apple' input.txt | grep -v 'test'

実行結果

banana
orange
grape
error_log
debug_log

実行コマンド

grep -Ev 'apple|banana' input.txt

実行結果

orange
grape
orange_test
error_log
debug_log

実行コマンド

grep -v 'apple' input.txt | grep -v 'banana'

実行結果

orange
grape
orange_test
error_log
debug_log

仕組み

条件 コマンド例 仕組み
AND条件 grep -v 'apple' | grep -v 'test' appleを除外した結果からさらにtestを除外するため、両方に一致しない行だけが残る
OR条件 grep -Ev 'apple|banana' 正規表現のORで指定したパターンに一致する行をまとめて除外する
OR条件 grep -v 'apple' | grep -v 'banana' appleを除外し、その後bananaも除外するため、どちらかに一致する行が除外される

解説

grep -v は一致した行ではなく「一致しない行」を出力する反転一致オプションです。

複数条件はパイプや拡張正規表現(-E)を組み合わせることで、AND条件・OR条件の絞り込みを実現できます。

grepの反転一致で除外対象を外部ファイルから読み込んで一致判定する方法

ファイル作成

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

ファイル作成

cat << 'EOF' > exclude.txt banana grape EOF

実行コマンド

grep -v -f exclude.txt input.txt

実行結果

apple
orange
melon

仕組み

オプション 役割
grep パターン検索を行う
-v 一致した行ではなく、不一致の行を出力する(反転一致)
-f exclude.txt 検索パターンを exclude.txt から読み込む
input.txt 検索対象ファイル
処理結果 exclude.txt に記載された文字列と一致する行を除外して出力

解説

grep -v -f を利用すると、除外対象のパターンを外部ファイルで管理できます。
除外条件が多い場合でもコマンドを変更せずにメンテナンスできるため、運用が容易になります。

grepの反転一致とawkを組み合わせて一致条件を柔軟に除外する方法

ファイル作成

cat << 'EOF' > input.txt INFO: start ERROR: database WARN: timeout DEBUG: trace ERROR: network INFO: end EOF

実行コマンド

grep -v '^ERROR:' input.txt

実行結果

INFO: start
WARN: timeout
DEBUG: trace
INFO: end

実行コマンド

grep -v '^ERROR:' input.txt | awk '!/DEBUG/'

実行結果

INFO: start
WARN: timeout
INFO: end

実行コマンド

grep -v '^ERROR:' input.txt | awk '!/DEBUG/ && !/WARN/'

実行結果

INFO: start
INFO: end

仕組み

コマンド要素 役割
grep -v '^ERROR:' ERROR:で始まる行を反転一致で除外
awk '!/DEBUG/' DEBUGを含む行を除外
awk '!/DEBUG/ && !/WARN/' DEBUGとWARNの両方を除外
| 前段の出力を次のコマンドへ渡す
!/パターン/ awkで一致しない行だけを出力

解説

grepの反転一致(-v)で大まかに除外し、awkで複数条件や複雑な条件を追加すると柔軟なフィルタリングが可能です。

単純な除外はgrep、細かな条件制御はawkと役割を分けると扱いやすくなります。

grepの反転一致が期待どおりに一致しない場合の原因と対処法

ファイル作成

cat << 'EOF' > input.txt INFO: started ERROR: timeout error: lowercase error WARNING: retry ERROR: disk full EOF

実行コマンド

grep -v "ERROR" input.txt

実行結果

INFO: started
error: lowercase error
WARNING: retry

実行コマンド

grep -vi "ERROR" input.txt

実行結果

INFO: started
WARNING: retry

実行コマンド

grep -Evi "ERROR|WARNING" input.txt

実行結果

INFO: started

仕組み

コマンド オプション 動作
grep -v "ERROR" input.txt -v ERROR に一致した行を除外し、一致しない行のみを表示する。大文字・小文字は区別されるため error は除外されない。
grep -vi "ERROR" input.txt -v, -i ERROR と error を同一視して判定し、それらに一致した行を除外する。
grep -Evi "ERROR|WARNING" input.txt -E, -v, -i 拡張正規表現を利用し、ERROR または WARNING に一致する行を除外する。大文字・小文字は区別しない。

解説

grep -v は「一致しない行」を表示しますが、パターンの解釈や大文字・小文字の違いによって期待どおりに除外できないことがあります。まずは -i の有無や入力データの実際の内容を確認することが重要です。

grepの反転一致でログ解析

ファイル作成

cat << 'EOF' > input.txt 2025-06-01 INFO Application started 2025-06-01 INFO User login success 2025-06-01 ERROR Database connection failed 2025-06-01 INFO Cache refreshed 2025-06-01 WARN Disk usage 85% 2025-06-01 ERROR Timeout occurred 2025-06-01 INFO Batch process completed EOF

実行コマンド

grep -v "ERROR" input.txt

実行結果

2025-06-01 INFO Application started
2025-06-01 INFO User login success
2025-06-01 INFO Cache refreshed
2025-06-01 WARN Disk usage 85%
2025-06-01 INFO Batch process completed

実行コマンド

grep -vi "error" input.txt

実行結果

2025-06-01 INFO Application started
2025-06-01 INFO User login success
2025-06-01 INFO Cache refreshed
2025-06-01 WARN Disk usage 85%
2025-06-01 INFO Batch process completed

実行コマンド

grep -vE "ERROR|WARN" input.txt

実行結果

2025-06-01 INFO Application started
2025-06-01 INFO User login success
2025-06-01 INFO Cache refreshed
2025-06-01 INFO Batch process completed

仕組み

オプション 仕組み 用途
-v 指定パターンに一致しない行を表示 ERROR行を除外
-i 大文字・小文字を区別しない error、ERRORの両方を除外
-E 拡張正規表現を使用 複数条件の除外
ERROR|WARN ERRORまたはWARNに一致 複数ログレベルの除外

解説

grepの反転一致は、不要なログを除外して必要な情報だけを抽出する際に便利です。

障害調査ではERRORやWARNを除外したり、逆に特定ログ以外を確認したりする用途でよく利用されます。

grepの反転一致で一致しないデータを活用するポイント

grepの反転一致は、一致しない行を抽出するための便利な機能です。

-vオプションを利用することで、特定文字列や正規表現に一致するデータを除外できます。

grepの反転一致を理解し、適切な一致条件を設定することで、日々のコマンド操作をより快適に進められます。

コメントを残す

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

©︎ 2025-2026 running terminal commands