
新Linux入門|grepコマンドを理解しよう!テキストファイルを検索する方法
Linuxでは、ログや設定ファイルなどテキスト形式のデータを扱う機会がとても多いですよね。
そんなときに「特定の文字列を素早く見つけたい!」という場面で活躍するのが grepコマンド です。
grepは、テキストファイル内から指定したパターンに一致する行を検索・抽出する コマンドです。
正規表現を使うことで、単純な文字検索だけでなく、複雑なパターン検索も柔軟に行えます。
システム管理やログ解析の必須ツールのひとつです。

🔍 grepコマンドの概要
grep は “Global Regular Expression Print” の略で、
指定した文字列や正規表現に一致する行を探し出し、その行を出力します。
つまり「grep」は「検索」の代名詞のような存在です。
ファイルの中から目的の情報を瞬時に見つけ出すことができる、とても便利なツールです。
📘 コマンド書式
grep [オプション] 検索パターン [ファイル名]📗 例
[suzuki@AlmaLinux ~]$ sudo grep error /var/log/messagesこのコマンドは、/var/log/messages ファイルの中から「error」という文字を含む行を表示します。
⚙️ grepコマンドの主なオプション一覧
| オプション | 説明 |
|---|---|
| -i | 大文字・小文字を区別せずに検索する。 |
| -v | 指定したパターンに一致しない行を表示する(反転検索)。 |
| -n | 検索結果の行番号を表示する。 |
| -r | 指定したディレクトリ以下を再帰的に検索する。 |
| -e [文字列] | 複数のパターンを指定してOR検索が可能。 |
| -l | 一致した行があるファイル名のみを表示する。 |
| -c | 一致した行の件数を表示する。 |
| -E | 拡張正規表現を有効にする(+ , ? ) |
| -F | 正規表現を無効にして、単なる文字列として扱う。 |
💡 ポイント
- 通常のgrepでは「正規表現」が使えますが、拡張正規表現を利用したいときは grep -E を使います。
- -r オプションを使うと、フォルダ内のすべてのファイルをまとめて検索できます。
🧪 grepコマンドの使用例と出力解説
① /etc/services ファイルから「www」を含む行を検索
[suzuki@AlmaLinux ~]$ grep www /etc/services
# http://www.iana.org/assignments/port-numbers
http 80/tcp www www-http # WorldWideWeb HTTP
http 80/udp www www-http # HyperText Transfer Protocol
www-ldap-gw 1760/tcp # www-ldap-gw
www-ldap-gw 1760/udp # www-ldap-gw
www-dev 2784/tcp # world wide web - development
www-dev 2784/udp # world wide web - development
flirtmitmir 3840/tcp # www.FlirtMitMir.de
flirtmitmir 3840/udp # www.FlirtMitMir.de💬 「www」という文字列を含む行が抽出されます。
② 大文字・小文字を区別せずに検索
[suzuki@AlmaLinux ~]$ grep -i www /etc/services
# http://www.iana.org/assignments/port-numbers
http 80/tcp www www-http # WorldWideWeb HTTP
http 80/udp www www-http # HyperText Transfer Protocol
webcache 8080/tcp http-alt # WWW caching service
webcache 8080/udp http-alt # WWW caching service
www-ldap-gw 1760/tcp # www-ldap-gw
www-ldap-gw 1760/udp # www-ldap-gw
www-dev 2784/tcp # world wide web - development
www-dev 2784/udp # world wide web - development
flirtmitmir 3840/tcp # www.FlirtMitMir.de
flirtmitmir 3840/udp # www.FlirtMitMir.de💬 -i オプションにより、WWW や Www などの大文字・小文字の違いを無視して検索できます。
③ /etc/passwd ファイルから「tanaka」を含む行を検索
[suzuki@AlmaLinux ~]$ grep tanaka /etc/passwd
tanaka:x:1001:1001::/home/tanaka:/bin/bash💬 指定した文字列に一致するユーザー情報が表示されます。
④ 行番号付きで「error」を検索
[root@AlmaLinux ~]# grep -n error /var/log/messages
52:Oct 28 10:43:11 systemd[1]: error: failed to start service💬 -n オプションで行番号を表示することで、どの行にエラーがあったか一目でわかります。
⑤ ディレクトリ全体を再帰的に検索
[suzuki@AlmaLinux ~]$ grep -r pattern /home
/home/suzuki/data.txt:pattern found here
/home/suzuki/test.sh:echo "pattern"💬 -r オプションを付けると、サブディレクトリも含めて検索します。
⑥ OR検索(複数パターンを指定)
[root@AlmaLinux ~]# grep -e warning -e error /var/log/messages
Nov 20 14:12:44 AlmaLinux alsactl[780]: alsa-lib main.c:1554:(snd_use_case_mgr_open) error: failed to import hw:0 use case configuration -2
Nov 20 14:12:50 AlmaLinux org.gnome.Shell.desktop[1254]: libEGL warning: egl: failed to create dri2 screen
(省略)💬 -e オプションを複数回使うことで、「warning」または「error」を含む行を抽出します。
⑦ 複数ファイルからまとめて検索
[root@AlmaLinux ~]# grep bash /etc/default/*
/etc/default/useradd:SHELL=/bin/bash💬 ワイルドカード(*)を使うことで、複数ファイルを一度に検索できます。
🧩 grepと他の検索コマンドの違い
| コマンド | 特徴 |
|---|---|
| grep | ファイルの中身(テキスト内容)を検索する。 |
| find | ファイル名や属性を検索する。 |
| locate | データベースを使って高速にファイル名を検索する。 |
💬 つまり、grepは「内容を探す」ためのコマンドです。
findやlocateと併用すれば、「場所」も「中身」も両方すぐに探せます。
✅ まとめ
- grepは、テキストファイルの中身を検索する最強ツール。
- 正規表現にも対応しており、複雑なパターン検索も可能。
- -i, -r, -n, -e などのオプションを組み合わせるとさらに便利。
- findやlocateと併用することで、ファイル探索の効率が大幅アップ!
💬 AlmaLinuxの管理やログ解析の現場では、「まずgrepで調べる」が基本です。
どんなファイルでも、grepを使えば必要な情報をすぐに見つけ出せます。
