grep コマンドの使い方 [Linux]

2025/04/25

grep コマンドとは?

grep(Global Regular Expression Print)は、ファイルや標準入力から指定したパターンに一致する行を検索して表示するコマンドです。
ログ調査、設定ファイル検索、出力フィルタリングなど幅広い場面で使用されます。


基本構文

grep [オプション] PATTERN [ファイル...]

例:

grep "error" /var/log/syslog

使用例と出力サンプル

ファイルからキーワードを検索

$ grep "root" /etc/passwd
root:x:0:0:root:/root:/bin/bash

標準入力との組み合わせ

$ cat /var/log/message | grep error

よく使うオプション一覧

オプション説明
-i大文字小文字を区別しない(case-insensitive)
-v一致しない行を表示(反転)
-r または -Rディレクトリ内を再帰的に検索
-n一致した行番号を表示
-l一致する行を含むファイル名のみ表示
-c一致した行数を表示
-H一致行のファイル名を表示(パイプ時に有効)
-o一致した部分だけを表示
-E拡張正規表現を使う(egrepと同等)
-F固定文字列検索(正規表現を無効に)
--color一致箇所を色付け表示(多くの環境でデフォルト)

正規表現の例

パターン意味
^abc行頭が abc^ERROR → ERRORで始まる行
xyz$行末が xyz.log$ → .logで終わる行
foo.*barfoo と bar の間に任意の文字列がある
[0-9]数字1文字
[A-Z]+英大文字の連続

応用使用例

ディレクトリ以下を一括検索(ログなど)

$ grep -rn "failed" /var/log/

複数パターンを拡張正規表現で指定(-E)

$ grep -E "error|fail|fatal" app.log

一致行だけでなく該当ファイル名を抽出

$ grep -l "password" *.conf

一致した部分だけを抜き出す(-o)

$ grep -o "https://[^ ]*" file.txt

よくあるエラーと対処

エラー原因解決策
Binary file matchesバイナリファイル--text を使う または strings 経由で処理
Argument list too longファイル数が多すぎるfind . -type f -exec grep PATTERN {} + を使う
No such file指定ファイルが存在しないパス・スペルを確認

実用Tips

  • grep + tail でリアルタイムログ監視:
  tail -f access.log | grep "500"
  • ファイルが特定の行を含むかのチェック(スクリプト向け):
  grep -q "ERROR" output.log && echo "エラーあり"

まとめ

  • grep は最も頻繁に使われるテキスト検索コマンドの一つ
  • -r, -i, -v, -E, -n, -l, -o などを適切に使い分けることで強力な検索が可能
  • 正規表現の理解が活用の鍵

参考リンク

  • https://man7.org/linux/man-pages/man1/grep.1.html
  • https://www.gnu.org/software/grep/manual/grep.html

コメントを残す

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