【完全リファレンス】Linux grepコマンドのオプション一覧と使い方|実用例80超で徹底解説
- 作成日 2026.06.18
- linux
grepはLinuxで最もよく使われるコマンドのひとつで、ファイル内検索からログ調査、シェルスクリプト処理まで、エンジニアの日常作業に欠かせないツールです。しかし、
- 大量のオプションがあって覚えきれない
-E、-P、-Fの使い分けが分からない- 再帰検索で
node_modulesを除外したい - ログでマッチ箇所の前後行も見たい
- 巨大ファイルで遅いがどう改善する?
- 複数パターンを同時検索したい
- 結果の活用方法(パイプ、xargs連携)
など、使いこなしには知識が必要です。
本記事では、grepコマンドの全主要オプションと実用パターンを、リファレンスとしてまとめ直しました。基本検索から正規表現の3バリエーション、再帰検索・除外、コンテキスト表示、ファイル絞り込み、パフォーマンス、macOSとの違い、80超の実用例、FAQまで完全網羅。この1本をブックマークすれば、grepに関するあらゆる疑問が解決します。
- 1. 結論:今すぐ使える基本パターン5選
- 2. grepコマンドの基本構文
- 3. 主要オプション一覧表
- 4. 基本的な検索オプション
- 5. 表示制御オプション
- 6. 再帰検索(最重要機能)
- 7. 正規表現の使い分け(-E / -P / -F / -G)
- 8. 複数パターンの検索
- 9. ファイル指定の応用
- 10. find・xargs との連携
- 11. パフォーマンス Tips
- 12. 実用パターン集(80超を厳選)
- 13. macOS(BSD grep)との違い
- 14. トラブルシューティング
- 15. よくある質問(FAQ)
- 15.1. Q1. grep と egrep の違いは?
- 15.2. Q2. grep と fgrep の違いは?
- 15.3. Q3. -A と -B と -C の覚え方は?
- 15.4. Q4. 「自分自身が grep にマッチしてしまう」を防ぐには?
- 15.5. Q5. ファイル名も一緒に出したい
- 15.6. Q6. -P オプションが「ライセンスのため使えない」と出ます
- 15.7. Q7. 結果に色を付けたい
- 15.8. Q8. 改行をまたいだパターンを検索したい
- 15.9. Q9. 大量のファイルから速く検索するには?
- 15.10. Q10. grep の結果を別ファイルに保存しつつ表示も見たい
- 15.11. Q11. シェルスクリプトでgrepの結果を変数に入れたい
- 15.12. Q12. grep より新しい・速いツールはありますか?
- 16. 参考リンク・関連資料
- 17. まとめ
結論:今すぐ使える基本パターン5選
時間がない方向けに、超頻出パターンを先に示します。
# ① ファイル内のキーワード検索
grep "ERROR" application.log
# ② 大文字小文字を無視
grep -i "error" application.log
# ③ ディレクトリ配下を再帰検索
grep -r "TODO" ./src/
# ④ マッチ箇所の前後3行も表示
grep -C 3 "Exception" application.log
# ⑤ 拡張子で絞って再帰検索
grep -r --include="*.py" "import" .
詳細・応用は以下で順に解説します。
grepコマンドの基本構文
grep [オプション] パターン [ファイル...]
最もシンプルな例
# ファイルから検索
grep "ERROR" /var/log/syslog
# 標準入力から検索
cat file.txt | grep "ERROR"
echo "Hello World" | grep "World"
# 複数ファイル
grep "config" file1.txt file2.txt file3.txt
結果がない場合
# マッチなしで終了コード1
grep "存在しないキーワード" file.txt
echo $? # → 1
# マッチありで終了コード0
grep "ある キーワード" file.txt
echo $? # → 0
シェルスクリプトで「マッチした/しなかった」を判定するのに使えます:
if grep -q "ERROR" application.log; then
echo "エラーが見つかりました"
fi
-qは「結果を出力せず終了コードだけ返す」モードです。
主要オプション一覧表
頻度の高いものを集約した早見表です。
検索条件
| オプション | 説明 |
|---|---|
-i | 大文字小文字を無視 |
-v | マッチしない行を出力(反転) |
-w | 単語単位でマッチ |
-x | 行全体が一致 |
-c | マッチした行数のみ表示 |
-m N | 最大N件でストップ |
表示制御
| オプション | 説明 |
|---|---|
-n | 行番号を表示 |
-H | ファイル名を表示(強制) |
-h | ファイル名を表示しない |
-l | マッチしたファイル名のみ表示 |
-L | マッチしなかったファイル名のみ表示 |
-o | マッチした部分のみ表示 |
--color | マッチ部分を色付け |
-A N | マッチ後 N 行も表示 |
-B N | マッチ前 N 行も表示 |
-C N | マッチ前後 N 行ずつ表示 |
パターン指定
| オプション | 説明 |
|---|---|
-E | 拡張正規表現(ERE) |
-P | Perl互換正規表現(PCRE) |
-F | 固定文字列として扱う |
-G | 基本正規表現(デフォルト) |
-e パターン | パターン明示指定(複数可) |
-f ファイル | パターンをファイルから読み込み |
再帰検索
| オプション | 説明 |
|---|---|
-r | ディレクトリを再帰検索 |
-R | シンボリックリンクもたどる再帰検索 |
--include | 含めるファイルパターン |
--exclude | 除外するファイルパターン |
--exclude-dir | 除外するディレクトリ |
その他
| オプション | 説明 |
|---|---|
-q | 出力なし、終了コードのみ |
-s | エラーメッセージ抑制 |
-a | バイナリも文字として扱う |
-I | バイナリファイルを除外 |
-z | NULL文字区切り(マルチライン処理) |
基本的な検索オプション
-i:大文字小文字を無視
# ERROR, Error, error 全てにマッチ
grep -i "error" application.log
-v:反転(マッチしない行)
# DEBUGを含まない行
grep -v "DEBUG" application.log
# 空行を除外
grep -v "^$" config.txt
# 複数条件で除外(DEBUGとINFOを除外)
grep -v -e "DEBUG" -e "INFO" application.log
-n:行番号表示
grep -n "TODO" main.py
# 42: # TODO: implement this
# 87: # TODO: refactor
-c:マッチ件数のみ
# ERRORが何件あるか
grep -c "ERROR" application.log
# 23
-w:単語単位マッチ
# "test" だけにマッチ。"testing", "testcase" は対象外
grep -w "test" file.txt
-x:行全体一致
# 行全体が "ERROR" の行のみ("ERROR: ..." はマッチしない)
grep -x "ERROR" file.txt
-m N:最大件数で停止
# 最初の10件で打ち切り
grep -m 10 "ERROR" huge.log
巨大ファイルで最初のヒットだけ知りたい時に高速化できます。
表示制御オプション
-l:マッチしたファイル名だけ表示
# パターンを含むファイルだけリスト
grep -l "TODO" *.py
# main.py
# utils.py
-L:マッチしないファイル名
# Copyrightが書かれていないファイル
grep -L "Copyright" *.py
-o:マッチ部分のみ抽出
# IPアドレスっぽいものを抽出
grep -oE "\b[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\b" access.log
# emailアドレス抽出
grep -oE "[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+" contacts.txt
-oはマッチした文字列のみを出力します。ログから特定パターンの値だけ抽出する時に強力。
-A / -B / -C:前後の行を含める(ログ調査必須)
# マッチ後10行も表示(after)
grep -A 10 "Exception" application.log
# マッチ前5行も表示(before)
grep -B 5 "Exception" application.log
# マッチ前後3行ずつ(context)
grep -C 3 "Exception" application.log
スタックトレース調査の必須技です。
–color:色付け
# マッチ部分を色付け表示
grep --color "ERROR" application.log
多くのディストリビューションではgrepがgrep --color=autoにエイリアスされており、自動的に色付けされます。
-H / -h:ファイル名表示の制御
# 単一ファイルでもファイル名表示
grep -H "ERROR" application.log
# 複数ファイルでもファイル名を表示しない
grep -h "ERROR" *.log
再帰検索(最重要機能)
ディレクトリ内のすべてのファイルを検索する機能です。
-r / -R:再帰検索
# カレント以下を再帰検索
grep -r "TODO" .
# 特定ディレクトリ
grep -r "TODO" /var/log/
# シンボリックリンクもたどる(-R)
grep -R "TODO" .
通常は-rで十分。-Rはシンボリックリンクで循環の危険があるため注意。
–include:含めるファイルパターン
# .py ファイルのみを対象に
grep -r --include="*.py" "import" .
# 複数パターン
grep -r --include="*.py" --include="*.js" "function" .
–exclude:除外するファイルパターン
# .log ファイルを除外
grep -r --exclude="*.log" "ERROR" /tmp/
# 複数
grep -r --exclude="*.log" --exclude="*.bak" "config" .
–exclude-dir:除外するディレクトリ
# node_modules を除外(最重要)
grep -r --exclude-dir="node_modules" "console.log" .
# 複数の除外
grep -r \
--exclude-dir="node_modules" \
--exclude-dir=".git" \
--exclude-dir="dist" \
"TODO" .
よく使う除外パターン
Node.js プロジェクト
grep -r \
--exclude-dir={node_modules,.git,.next,dist,build,coverage} \
"TODO" .
Python プロジェクト
grep -r \
--exclude-dir={__pycache__,.venv,venv,.git,.tox,dist,build,.pytest_cache} \
--include="*.py" \
"import" .
Java プロジェクト
grep -r \
--exclude-dir={target,.git,.idea,.gradle,build} \
--include="*.java" \
"@Override" .
.gitignore対応(再帰検索の罠)
grepは.gitignoreを無視するため、node_modules等まで検索してしまいます。除外オプションを毎回書くのが面倒なら、ripgrep(後述)を使うのが現実的です。
正規表現の使い分け(-E / -P / -F / -G)
grepは4種類の正規表現エンジンを切り替えられます。
基本:BRE(Basic Regular Expression、デフォルト)
# 基本正規表現
grep "^ERROR" file.txt # 行頭
grep "$" file.txt # 行末
grep "[0-9]" file.txt # 数字
-E:ERE(Extended Regular Expression、拡張)
# パイプ(または)、丸括弧、+、?、{} がエスケープなしで使える
grep -E "ERROR|WARNING" file.txt
grep -E "[0-9]+" file.txt
grep -E "https?://" file.txt
grep -E "^(GET|POST) /" access.log
または egrep でも同じ(非推奨ですが使われ続けています):
egrep "ERROR|WARNING" file.txt # = grep -E
-P:PCRE(Perl Compatible Regular Expression)
# 後読み・先読み、\d、\w、\s等が使える
grep -P "\d{3}-\d{4}-\d{4}" file.txt # 電話番号
grep -P "(?<=user=)\w+" file.txt # 後読み
grep -P "\bword\b" file.txt # 単語境界
grep -P "^(?!#)" config.txt # 否定先読み
PCREは最も表現力が高い反面、対応していない環境(macOS BSD grepなど)があります。
-F:固定文字列(高速)
# 正規表現メタ文字を文字として扱う(高速)
grep -F "a.b.c" file.txt # "a.b.c" として検索(.は任意1文字でない)
# 複数固定文字列を改行区切りで
grep -F "ERROR
CRITICAL
FATAL" file.txt
または fgrep(非推奨):
fgrep "192.168.1.1" file.txt # = grep -F
-G:BRE 明示
# デフォルトと同じ(明示する意味は少ない)
grep -G "pattern" file.txt
使い分けの指針
| 状況 | 推奨 |
|---|---|
| シンプルなキーワード検索 | -F(最速) |
| 単純な正規表現 | デフォルトまたは -G |
| ` | +?` を使いたい |
\d \w 先読み後読み | -P |
複数パターンの検索
-e で複数パターン
# ERROR または WARNING
grep -e "ERROR" -e "WARNING" application.log
# 同じことを -E で書く
grep -E "ERROR|WARNING" application.log
-f でパターンファイル
# パターン.txt の各行をパターンとして使う
grep -f patterns.txt application.log
patterns.txt の例:
ERROR
WARNING
CRITICAL
FATAL
複数キーワードを管理しやすく、また正規表現メタ文字を考慮する必要がないためエスケープ忘れを防げます。
重複行を排除
# 検索結果の重複を排除
grep "ERROR" *.log | sort -u
ファイル指定の応用
バイナリファイルの扱い
# バイナリも文字として検索
grep -a "PATTERN" binary_file
# バイナリファイルは除外
grep -rI "PATTERN" .
# バイナリと判定したファイル名のみ通知
grep -rl --binary-files=binary "PATTERN" .
圧縮ファイル内検索
# gzip圧縮ファイル
zgrep "ERROR" application.log.gz
# bzip2
bzgrep "ERROR" application.log.bz2
# xz
xzgrep "ERROR" application.log.xz
# 複数圧縮ファイルを一括検索
zgrep "ERROR" /var/log/*.gz
標準入力との連携
# パイプ経由
ps aux | grep nginx
# プロセス除外(自分自身を除く)
ps aux | grep [n]ginx
# tail -f との連携(リアルタイム監視)
tail -f application.log | grep --line-buffered "ERROR"
--line-bufferedはバッファリングを無効化し、リアルタイムで表示するために重要。
find・xargs との連携
grep単体での再帰検索ではなく、findと組み合わせる方法もあります。
find + grep
# find で対象を絞り、grep で検索
find . -name "*.py" -exec grep -l "import os" {} \;
# 高速版
find . -name "*.py" -exec grep -l "import os" {} +
find + xargs + grep
# パスに空白があっても安全
find . -name "*.py" -print0 | xargs -0 grep -l "import os"
grep の再帰検索 vs find+grep
| アプローチ | メリット |
|---|---|
grep -r --include | シンプル、grep単体で完結 |
find + grep | 複雑なファイル条件(更新日時など)と組み合わせ可能 |
# 過去24時間以内に変更された .py ファイルから検索(find活用)
find . -name "*.py" -mtime -1 -exec grep -l "TODO" {} +
# 1MB以上のファイルからのみ検索
find . -type f -size +1M -exec grep -l "PATTERN" {} +
findの詳細は[Linux find オプション一覧]の記事を参照してください。
パフォーマンス Tips
LANG=C で高速化
# UTF-8処理を無効化(ASCII限定なら大幅高速化)
LANG=C grep "PATTERN" huge_file.log
# 環境変数で永続化
export LANG=C
日本語等のマルチバイト文字を含まない検索なら、5〜10倍速くなることがあります。
-F(固定文字列)の活用
# 正規表現を使わないなら -F が最速
grep -F "192.168.1.1" huge_log.log
早期終了
# 最初の1件で終了
grep -m 1 "PATTERN" huge.log
# 結果を使わず存在確認だけ
grep -q "PATTERN" huge.log && echo "Found"
ripgrep(rg)の活用
grepはGNU実装ですが、より高速なRust製のripgrepがあります:
# インストール
sudo apt install ripgrep # Ubuntu
brew install ripgrep # Mac
# 使い方(grepと似ているが高速+デフォルトでgitignore対応)
rg "PATTERN"
rg -t py "import" # Pythonファイルのみ
rg --files-with-matches "PATTERN"
利点:
- gitignoreを自動で尊重
- 並列処理で高速
- 色付け・スマートケース等のデフォルト動作が便利
- バイナリ自動スキップ
開発マシンでの日常利用ならrgへの移行をおすすめします。
実用パターン集(80超を厳選)
ログ調査系
# 直近のエラー
tail -1000 application.log | grep -i "error"
# エラーとその前後10行
grep -C 10 "Exception" application.log
# 特定時間帯のログ
grep "2026-06-17 10:" application.log
# Apache/Nginx の特定ステータスコード
grep ' 500 ' access.log
grep -E ' (4|5)[0-9]{2} ' access.log # 4xx と 5xx
# 特定IPからのアクセス
grep "192.168.1.100" access.log
# User-Agentの集計
grep -oE '"[^"]*"$' access.log | sort | uniq -c | sort -rn | head
# 1分間に何回エラーが出たか
grep "ERROR" application.log | cut -c1-16 | sort | uniq -c
コード調査系
# TODOコメントを一覧
grep -rn "TODO" --include="*.py" .
# 関数定義を探す
grep -rn "^def " --include="*.py" .
# import文の一覧
grep -rh "^import\|^from" --include="*.py" . | sort -u
# 特定変数の使用箇所
grep -rn "DATABASE_URL" .
# ハードコードされたパスワード探索(セキュリティ)
grep -rEn "(password|secret|api_key)\s*=\s*['\"]" --include="*.py" .
設定ファイル系
# コメントを除いた有効行のみ
grep -v "^#" /etc/ssh/sshd_config | grep -v "^$"
# 短くした版
grep -v "^\s*#" config.txt | grep -v "^$"
# 設定値の確認
grep "^Port" /etc/ssh/sshd_config
# ファイル内の現在の設定を一覧
grep -E "^[a-zA-Z_]+\s*=" .env
システム調査系
# 実行中のプロセス検索
ps aux | grep nginx
# 自分自身を除外する技
ps aux | grep [n]ginx
# 起動中のサービス
systemctl list-units --type=service | grep running
# CPUを使っているプロセスTop10
ps aux | sort -rn -k 3 | head -10
# 特定ポートを使うプロセス
ss -tlnp | grep ":80 "
# システムログでエラー
journalctl | grep -i error | tail -20
テキスト処理系
# 行数カウント
grep -c "PATTERN" file.txt
# 単語の出現回数
grep -oE "[a-zA-Z]+" file.txt | sort | uniq -c | sort -rn | head
# 数字のみ抽出
grep -oE "[0-9]+" file.txt
# 重複行
sort file.txt | uniq -d
# ユニーク行
sort file.txt | uniq -u
URLやIPアドレス系
# URLを抽出
grep -oE "https?://[^[:space:]]+" file.txt
# IPアドレスを抽出
grep -oE "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b" file.txt
# メールアドレスを抽出
grep -oE "[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}" file.txt
Git連携
# 変更履歴からのキーワード検索(git log側)
git log --all --grep="bugfix"
# 変更内容からの検索
git log -S "search_term"
# 現在のリポジトリから検索(gitignore考慮)
git grep "PATTERN"
# 過去のコミットも含む
git grep "PATTERN" $(git rev-list --all)
git grepは通常のgrepより高速で、.gitignoreを自動考慮します。
docker 関連
# Dockerコンテナのログから検索
docker logs container_name 2>&1 | grep ERROR
# 全コンテナのエラーログ
for c in $(docker ps -q); do
echo "=== $c ==="
docker logs $c 2>&1 | grep -i error | tail -5
done
macOS(BSD grep)との違い
macOSはgrepはBSD系で、Linuxのgrep(GNU)と一部挙動が異なります。
主な違い
| 機能 | GNU grep(Linux) | BSD grep(macOS) |
|---|---|---|
-P(PCRE) | ✅ あり | ❌ なし(macOS既定) |
--include | ✅ あり | ✅ あり |
--exclude-dir | ✅ あり | ✅ あり |
-A/-B/-C | ✅ あり | ✅ あり |
色出力 --color | ✅ デフォルトauto | ✅ あり |
後方互換 egrep/fgrep | ⚠️ 非推奨 | ✅ あり |
Mac で GNU grep を使う
brew install grep
# /opt/homebrew/bin/ggrep として使える
ggrep -P "\d+" file.txt
PATHを調整すればgrepとして使えます:
echo 'export PATH="/opt/homebrew/opt/grep/libexec/gnubin:$PATH"' >> ~/.zshrc
macOS で動かない代表例
# ❌ macOS では失敗
grep -P "\d+" file.txt
# ✅ macOS でも動作(-Eを使う)
grep -E "[0-9]+" file.txt
トラブルシューティング
マッチしないはずがマッチする
# 正規表現メタ文字が解釈されている
grep "a.b" file.txt # "axb", "ayb" などにもマッチ
# 文字として扱うには -F
grep -F "a.b" file.txt
結果が出ない
考えられる原因:
- 大文字小文字の違い →
-iを試す - ファイルが空またはバイナリ →
-aで文字列として処理 - パターンがエスケープされていない →
\でエスケープ or-F
Binary file matches
# 「Binary file XXX matches」表示
grep "PATTERN" mixed_file
# Binary file mixed_file matches
# テキストとして強制処理
grep -a "PATTERN" mixed_file
# バイナリは検索しない
grep -I "PATTERN" mixed_file
「No such file or directory」が大量に出る
# stderr を捨てる
grep -r "PATTERN" / 2>/dev/null
grep が遅い
主な原因と対処:
- 巨大ファイル →
LANG=C grepで高速化 - 正規表現が複雑 →
-Fを使う or 単純化 - ディレクトリが大きい →
--exclude-dirで絞る - それでも遅い →
ripgrep(rg)を試す
パイプの後ろが反応しない
# ❌ バッファリングで遅い・反応しない
tail -f file.log | grep "PATTERN" | awk '{...}'
# ✅ ラインバッファリング有効化
tail -f file.log | grep --line-buffered "PATTERN" | awk '{...}'
よくある質問(FAQ)
Q1. grep と egrep の違いは?
egrep = grep -E です。POSIX的には egrep は非推奨で、grep -E を使うのが標準とされています。
# 同じ意味
egrep "ERROR|WARNING" file.txt
grep -E "ERROR|WARNING" file.txt
Q2. grep と fgrep の違いは?
fgrep = grep -F で、固定文字列検索(正規表現を解釈しない)です。これも非推奨。
# 同じ意味
fgrep "192.168.1.1" file.txt
grep -F "192.168.1.1" file.txt
Q3. -A と -B と -C の覚え方は?
-A= After(マッチ後)-B= Before(マッチ前)-C= Context(前後)
grep -A 3 "Exception" log # マッチ後3行
grep -B 3 "Exception" log # マッチ前3行
grep -C 3 "Exception" log # マッチ前後3行
Q4. 「自分自身が grep にマッチしてしまう」を防ぐには?
# ps aux | grep nginx だと grep nginx 自身もマッチ
ps aux | grep nginx
# 解決1:角括弧トリック
ps aux | grep [n]ginx
# 解決2:grep を除外
ps aux | grep nginx | grep -v grep
# 解決3:pgrep を使う
pgrep -fl nginx
Q5. ファイル名も一緒に出したい
複数ファイル検索時は自動でファイル名が表示されますが、単一ファイル時は出ません:
# -H で強制表示
grep -H "PATTERN" file.txt
# file.txt:該当行
Q6. -P オプションが「ライセンスのため使えない」と出ます
GNU grepでPCREサポートがビルドされていない場合に発生します。pcregrepを使うか、ripgrepに移行してください:
sudo apt install pcregrep
pcregrep "\d+" file.txt
Q7. 結果に色を付けたい
# 色付け
grep --color "PATTERN" file.txt
# 環境変数で永続化(.bashrcに追加)
export GREP_OPTIONS='--color=auto' # 非推奨だが多くの環境で動く
# エイリアスで設定(推奨)
alias grep='grep --color=auto'
Q8. 改行をまたいだパターンを検索したい
grepは行単位処理のため、複数行マッチは標準でできません。代替策:
# -z で NULL区切り(ファイル全体を1行として扱う)
grep -Pz "(?s)BEGIN.*?END" file.txt
# pcregrep の M (multiline) オプション
pcregrep -M "BEGIN.*?END" file.txt
# またはawk
awk '/BEGIN/,/END/' file.txt
Q9. 大量のファイルから速く検索するには?
# ripgrep(最速)
rg "PATTERN"
# ag (the silver searcher) も高速
ag "PATTERN"
# grep の並列化(xargs)
find . -name "*.txt" -print0 | xargs -0 -P 8 grep "PATTERN"
Q10. grep の結果を別ファイルに保存しつつ表示も見たい
# tee を使う
grep "PATTERN" file.txt | tee results.txt
# 追記したい場合
grep "PATTERN" file.txt | tee -a results.txt
Q11. シェルスクリプトでgrepの結果を変数に入れたい
# 結果が複数行ある場合
RESULT=$(grep "PATTERN" file.txt)
echo "$RESULT"
# 件数を取得
COUNT=$(grep -c "PATTERN" file.txt)
echo "Found $COUNT matches"
# 存在確認のみ
if grep -q "PATTERN" file.txt; then
echo "Found"
fi
Q12. grep より新しい・速いツールはありますか?
| ツール | 特徴 |
|---|---|
| ripgrep (rg) | Rust製、最速、gitignore対応 |
| ag (the silver searcher) | Go製、ripgrepの先駆者 |
| ack | Perl製、開発者向け |
| git grep | gitリポジトリ専用、ripgrep並み高速 |
開発マシンでの日常使いならripgrepを強く推奨します。
参考リンク・関連資料
公式ドキュメント
- GNU Grep 公式 – GNU grep プロジェクト
- grep(1) manページ(Ubuntu) – grep コマンド公式
- grep(1) manページ(POSIX) – POSIX標準仕様
- GNU Grep マニュアル – 詳細マニュアル
正規表現
- PCRE Documentation – PCRE 公式
- Perl Regular Expressions – Perl正規表現
代替ツール
- ripgrep(GitHub) – Rust製の高速grep
- the silver searcher(GitHub) – ag
- ack – 開発者向けgrep代替
関連記事(本サイト)
- Linux find オプション一覧 – findコマンドリファレンス
- UbuntuでIPアドレスを確認する全方法 – ネットワーク確認
- wget と curl の違いを徹底比較 – HTTP通信ツール
- Docker「no space left on device」エラーの対処 – 容量問題
まとめ
grepコマンドはLinuxで最頻出の検索ツール。要点を再整理します。
- 基本構文:
grep [オプション] パターン [ファイル...] - 超頻出オプション:
-i(大小無視)、-r(再帰)、-n(行番号)、-v(反転)、-C N(前後N行) - 正規表現の使い分け:
-F(固定)、デフォルト(BRE)、-E(ERE)、-P(PCRE) - 再帰検索の鍵:
--include/--exclude/--exclude-dir - 複数パターン:
-e複数指定、-fファイル指定 - xargs/findとの連携:
-print0 | xargs -0 grep、find -exec grep - パフォーマンス:
LANG=C、-F、-m、ripgrep への移行 - macOS注意: BSD grepは
-P非対応、HomebrewでGNU grep可 - 代替ツール:
ripgrep(rg)が圧倒的に高速&便利
これらの知識は、ログ調査・コード探索・サーバー運用・テキスト処理など、エンジニアの日常業務すべてで活用できます。本記事をブックマークしておけば、いつでも適切なgrepコマンドを組み立てられるようになります。
本記事は2026年6月時点の情報をもとに、GNU grep 3.x(Ubuntu 24.04標準)、BSD grep(macOS Sonoma/Sequoia)での動作確認に基づき作成しています。バージョンによってオプション挙動が異なる場合があるため、最新の情報は公式マニュアルもあわせてご確認ください。
-
前の記事
SSH「Host key verification failed」エラーの原因と対処法|安全な解決方法 2026.06.18
-
次の記事
【完全リファレンス】Linux sedコマンドのオプション一覧と使い方|実用例80超で徹底解説 2026.06.18
コメントを書く