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

grepの完全一致を徹底解説

updated: 2026/07/21 created: 2026/07/21

はじめに

grepはLinuxやUnixで文字列を検索する代表的なコマンドです。

しかし、部分一致と完全一致の違いが分かりにくく、思った結果にならないことは少なくありません。

本記事では、基本から応用まで詳しく解説します

参考: GNU grep

grepで完全一致する基本構文

ファイル作成

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

実行コマンド

grep -x "apple" input.txt

実行結果

apple
apple

実行コマンド

grep -Fx "apple" input.txt

実行結果

apple
apple

仕組み

項目 内容
grep 指定した文字列を検索するコマンド
-x 行全体が検索文字列と完全一致した場合のみ表示する
-F 正規表現ではなく固定文字列として検索する
"apple" 完全一致させたい検索文字列
input.txt 検索対象のファイル

解説

grep -xを使用すると、行全体が検索文字列と一致した行だけを抽出できます。正規表現を無効化したい場合は-Fを組み合わせたgrep -Fxを使用すると、文字列をそのまま検索できます。

grepで完全一致する方法(-xオプション)

ファイル作成

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

実行コマンド

grep -x "apple" input.txt

実行結果

apple
apple

実行コマンド

grep "apple" input.txt

実行結果

apple
apple pie
apple

仕組み

項目 内容
grep 指定した文字列を検索するコマンド
-x 行全体が検索文字列と完全一致した場合のみ表示する
"apple" 検索する文字列
input.txt 検索対象のファイル

解説

grep -xは行全体が検索文字列と一致した場合のみヒットするため、部分一致を除外できます。
完全一致で検索したい場合は、-xオプションを利用するのが最も簡単です。

grepで単語を完全一致させる方法(-wオプション)の違い

ファイル作成

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

実行コマンド

grep "apple" input.txt

実行結果

apple
pineapple
apple pie
apple

実行コマンド

grep -w "apple" input.txt

実行結果

apple
apple pie
apple

実行コマンド

grep -iw "apple" input.txt

実行結果

apple
apple pie
Apple
apple

仕組み

コマンド 一致方法 pineapple apple pie apple
grep "apple" 部分一致
grep -w "apple" 単語単位で完全一致 ×
grep -iw "apple" 大文字・小文字を無視した単語単位の完全一致 × ○(Appleも一致)

解説

grepは通常、指定した文字列を含む行を検索します。

-wオプションを付けると単語境界を考慮するため、pineappleのような部分一致を除外し、単語として完全一致する行だけを抽出できます。

grepで行頭・行末を指定して完全一致する方法(^と$)

ファイル作成

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

実行コマンド

grep '^apple$' input.txt

実行結果

apple
apple

実行コマンド

grep -n '^apple$' input.txt

実行結果

1:apple
6:apple

実行コマンド

grep '^apple' input.txt

実行結果

apple
apple pie
apple

実行コマンド

grep 'apple$' input.txt

実行結果

apple
pineapple
apple

仕組み

指定方法 意味 一致する文字列
^ 行頭を表す ^apple apple、apple pie
$ 行末を表す apple$ apple、pineapple
^...$ 行頭から行末まで完全一致 ^apple$ apple のみ

解説

^は行頭、$は行末を表す正規表現です。
両方を組み合わせた^文字列$を使うことで、行全体が指定した文字列と完全一致する行だけを抽出できます。

grepで完全一致と正規表現を使い分ける方法

ファイル作成

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

実行コマンド

grep -x "apple" input.txt

実行結果

apple
apple

実行コマンド

grep "apple" input.txt

実行結果

apple
apple pie
apple
pineapple

実行コマンド

grep -w "apple" input.txt

実行結果

apple
apple pie
apple

仕組み

方法 コマンド マッチする対象 主な用途
完全一致 grep -x "apple" input.txt 行全体がappleの行のみ 完全に同じ文字列を探す
単語一致 grep -w "apple" input.txt 単語としてのappleのみ 他の単語の一部を除外したい場合
正規表現 grep "apple" input.txt appleを含むすべての行 部分一致やパターン検索をしたい場合

解説

grep -xは行全体が検索文字列と一致した場合のみヒットします。
一方、通常のgrepは正規表現として扱われるため、指定した文字列を含む行すべてが検索対象になります。

grepで固定文字列による完全一致検索を高速化する方法(-F)

ファイル作成

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

実行コマンド

grep -F -x "apple" input.txt

実行結果

apple
apple

実行コマンド

grep -F -x "banana" input.txt

実行結果

banana
banana

実行コマンド

grep -F -x "Apple" input.txt

実行結果

Apple

仕組み

項目 内容
-F 検索文字列を正規表現ではなく固定文字列として扱うため高速に検索できる
-x 行全体が検索文字列と完全一致する場合のみ一致と判定する
完全一致 apple は一致するが pineapple は一致しない
高速化 正規表現の解析を行わないため、大量データでは通常の grep より高速になる

解説

grep -F -x を使用すると、固定文字列による完全一致検索を高速に実行できます。
正規表現が不要な検索では、シンプルかつ効率的な方法です。

grepで複数の完全一致パターンを検索する方法

ファイル作成

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

実行コマンド

grep -x -e "apple" -e "orange" input.txt

実行結果

apple
orange
orange

仕組み

項目 内容
grep テキストを検索するコマンド
-x 行全体がパターンと完全一致した場合のみ一致と判定する
-e "apple" 検索する完全一致パターンを指定する
-e "orange" 2つ目以降の検索パターンを追加する
input.txt 検索対象のファイル

解説

-eを複数指定すると、複数の検索パターンをOR条件で検索できます。
-xを組み合わせることで、部分一致ではなく行全体が一致するデータだけを抽出できます。

grepで完全一致しない行を抽出する方法(-v)

ファイル作成

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

実行コマンド

grep -vx "apple" input.txt

実行結果

orange
banana
apple pie
Apple

仕組み

オプション 説明
grep 条件に一致する行を検索するコマンド
-x 行全体が指定した文字列と完全一致する場合のみ一致と判定する
-v 一致した行ではなく、一致しない行を表示する
"apple" 完全一致の判定対象となる文字列
input.txt 検索対象のファイル

解説

-xで行全体の完全一致を判定し、-vを組み合わせることで完全一致しない行だけを抽出できます。
部分一致(apple pieなど)や大文字・小文字が異なる行(Apple)は完全一致ではないため表示されます。

grepで完全一致した件数をカウントする方法(-c)

ファイル作成

cat << 'EOF' > input.txt apple orange apple Apple apple pie apple EOF

実行コマンド

grep -c -x 'apple' input.txt

実行結果

3

仕組み

オプション 説明
grep 条件に一致する行を検索するコマンド
-c 一致した行数のみを表示する
-x 行全体が検索文字列と完全一致する行だけを対象にする
'apple' 検索する文字列
input.txt 検索対象のファイル

解説

grep -c -xを使用すると、指定した文字列と行全体が完全一致する行数だけを簡単にカウントできます。

Appleやapple pieのような部分一致・大文字小文字が異なる行はカウントされません。

grepで完全一致した行番号を表示する方法(-n)

ファイル作成

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

実行コマンド

grep -nx "apple" input.txt

実行結果

1:apple
5:apple

仕組み

オプション 説明
grep テキストから条件に一致する行を検索するコマンド
-n 一致した行の行番号を表示する
-x 行全体が検索文字列と完全一致した場合のみ一致とする
"apple" 検索する文字列
input.txt 検索対象のファイル

解説

-xを指定すると、行全体が検索文字列と一致した場合のみ結果に表示されます。

-nと組み合わせることで、一致した行番号も同時に確認できます。

grepで複数ファイルから完全一致を検索する方法

ファイル作成

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

ファイル作成

cat << 'EOF' > file2.txt grape grep pineapple orange EOF

ファイル作成

cat << 'EOF' > file3.txt grep pattern grep banana EOF

実行コマンド

grep -x "grep" file1.txt file2.txt file3.txt

実行結果

file1.txt:grep
file2.txt:grep
file3.txt:grep

仕組み

項目 内容
grep 指定した文字列を検索するコマンド
-x 行全体が検索文字列と完全一致する場合のみ表示する
"grep" 完全一致で検索する文字列
file1.txt file2.txt file3.txt 検索対象となる複数ファイル

解説

grep -x を使用すると、行全体が検索文字列と完全一致した場合のみ結果を表示できます。
複数ファイルを指定することで、一度に完全一致する行を効率よく検索できます。

grepでディレクトリ配下を完全一致検索する方法(-r)

ファイル作成

mkdir -p logs

ファイル作成

cat << 'EOF' > logs/app.log sample error warning sample sample.log Sample EOF

ファイル作成

cat << 'EOF' > logs/system.log warning sample sample.log EOF

実行コマンド

grep -r -x "sample" logs

実行結果

logs/system.log:sample
logs/app.log:sample
logs/app.log:sample

仕組み

オプション 説明
grep テキストを検索するコマンド
-r ディレクトリ配下を再帰的に検索する
-x 行全体が検索文字列と完全一致する場合のみ表示する
"sample" 完全一致で検索する文字列
logs 検索対象のディレクトリ

解説

grep -r -xを使用すると、ディレクトリ配下のすべてのファイルを対象に、指定した文字列と行全体が完全一致する行だけを検索できます。sample.logやSampleのような部分一致や大文字・小文字が異なる行は一致しません。

grepで完全一致検索をパイプ(|)と組み合わせる方法

ファイル作成

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

実行コマンド

cat input.txt | grep -x "apple"

実行結果

apple
apple

実行コマンド

cat input.txt | grep -x "apple" | wc -l

実行結果

2

仕組み

項目 内容
cat input.txt ファイルの内容を標準出力へ出力する
| 前のコマンドの標準出力を次のコマンドへ渡す(パイプ)
grep 条件に一致する行を検索する
-x 行全体が検索文字列と完全一致する行のみを表示する
"apple" 完全一致で検索する文字列
wc -l 一致した行数を数える

解説

grep -xを使用すると、指定した文字列と行全体が一致するものだけを抽出できます。
パイプ(|)を組み合わせることで、検索結果をさらに件数集計などのコマンドへ渡せます。

grepで完全一致検索の終了ステータスを確認する方法

ファイル作成

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

実行コマンド

grep -x "apple" input.txt

実行結果

apple

実行コマンド

echo $?

実行結果

0

実行コマンド

grep -x "grape" input.txt

実行結果

no output

実行コマンド

echo $?

実行結果

1

仕組み

項目 内容
grep -x 行全体が検索文字列と完全一致する行だけを検索する
終了ステータス 0 完全一致する行が1件以上見つかった
終了ステータス 1 完全一致する行が見つからなかった
echo $? 直前に実行した grep の終了ステータスを表示する

解説

grep -xを使用すると、行全体が検索文字列と一致する場合のみヒットします。

echo $?で終了ステータスを確認すれば、シェルスクリプトでも一致・不一致を簡単に判定できます。

grepで完全一致検索ができない原因と対処法

ファイル作成

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

実行コマンド

grep -x "apple" input.txt

実行結果

apple
apple

実行コマンド

grep "apple" input.txt

実行結果

apple
pineapple
apple pie
apple

実行コマンド

grep -ix "apple" input.txt

実行結果

apple
Apple
apple

仕組み

原因 対処法
grepはデフォルトで行内の部分一致を検索するため、pineappleやapple pieも一致する -xを付けて行全体を対象に完全一致検索する
大文字・小文字を区別するため、Appleはappleと一致しない -iを追加してgrep -ixを使用する

解説

grepで完全一致検索ができない原因の多くは、デフォルトが部分一致検索であることです。
-xや-ixを使うことで、意図した完全一致検索を実現できます。

grepの完全一致のポイントまとめ

grepの完全一致検索は、用途に応じてオプションや正規表現を使い分けることが重要です。

基本は-xを理解し、単語単位なら-w、柔軟な条件なら^と$や正規表現を活用すると効率的です。

基本を押さえておけば、ファイル検索やログ解析でも正確な一致検索を行えるようになります。

コメントを残す

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

©︎ 2025-2026 running terminal commands