grep はファイルの中身から、条件に一致する行だけを取り出すコマンドです。-n で行番号、-i で大文字小文字を無視、-r でディレクトリを丸ごと検索する使い方を、ブラウザ上のターミナルで打ちながら確認できます。
最終更新: 2026-09-05
grep [オプション] 探したい文字列 ファイル...
ファイルを1行ずつ見て、一致した行だけを出します。 一致しない行は出ません。
このページのターミナルには、ログとソースコードが置いてあります。
$ grep ERROR app.log
ERROR connection refused
ERROR timeout
5行あるログのうち、ERROR を含む2行だけが出ました。
これが grep の基本の働きです。
-n を付けると、その行がファイルの何行目かが分かります。
$ grep -n ERROR app.log
3:ERROR connection refused
5:ERROR timeout
エディタで開いて直すときに、この番号がそのまま使えます。
-i を付けると、書き方の揺れを無視して探します。
$ grep -i todo README.md
Todo: write the setup guide.
TODO と書いても Todo と書いてもある、という状況で効きます。
-r を付けると、そのディレクトリの下にあるファイルを全部見ます。
どのファイルの行かも一緒に出ます。
$ grep -r TODO .
./src/index.js:// TODO: handle errors
オプションは組み合わせられます。
$ grep -ri todo src
src/index.js:// TODO: handle errors
src/utils.js:// todo: add tests
-v は結果をひっくり返して、一致しなかった行を出します。
$ grep -v INFO app.log
WARN slow query
ERROR connection refused
ERROR timeout
ログから通常のログを取り除いて、異常だけを残す、という使い方ができます。
grep は、大量の中から自分に関係のある行だけを引き抜くために打ちます。
| 場面 | 打ち方 |
|---|---|
| ログから失敗だけ拾う | grep ERROR app.log |
| どのファイルにその関数があるか探す | grep -rn "createUser" src |
| 件数だけ知りたい | grep -c ERROR app.log |
| 別のコマンドの結果から絞る | ls -l | grep ".json" |
件数だけを見るときは -c を使います。
$ grep -c ERROR app.log
2
何も出ないのは、エラーではなく「無かった」です。
$ grep nope app.log
打ち間違いを疑う前に、大文字小文字(-i)と、探す場所が合っているかを確かめてください。
空白や記号を含む文字列は引用符で囲みます。
grep connection refused app.log と書くと、refused がファイル名として扱われます。
grep "connection refused" app.log と囲めば1つの文字列になります。
探しているのは中身であって、ファイル名ではありません。
名前で探したいときは find です。
webterm.appこのサイト
ターミナル基礎
よく使うコマンドを学ぶ
learn.webterm.app別のサイト
