Linuxコマンド一覧

grepコマンド|ファイルの中から文字列を探す

__ __ _ _____
\ \ / /__| |_|_ _|__ _ __ _ __ ___
\ \ /\ / / _ \ '_ \| |/ _ \ '__| '_ ` _ \
\ V V / __/ |_) | | __/ | | | | | |
\_/\_/ \___|_.__/|_|\___|_| |_| |_| |_
 
grep を試すためのサンドボックスです。実機のファイルには影響しません。
user@webterm:~/project$
 

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別のサイト

>_WEBTERM LEARN

WebTerm Learn|1つのコマンドから、使える状態へ

コマンドは単体で覚えるより、実際の作業の流れの中で使うほうが身につきます。順番に積み上げていくコースがあります。

コースを見る

関連するコマンド

find / cat / less / tail

よくある質問

grep は何の略ですか?
エディタ ed の g/re/p(global / regular expression / print)という操作が由来です。全体から正規表現に一致する行を出す、という意味がそのまま名前になっています。
何も表示されないときは失敗ですか?
いいえ、一致する行が1つも無かったという結果です。grep は見つからなくてもエラーを出さず、黙って終わります。
ディレクトリを指定するとエラーになります
grep は既定でファイルしか読みません。ディレクトリの中を全部探すときは -r を付けます。
grep と find はどう使い分けますか?
grep はファイルの中身を探し、find はファイルそのものを名前や種類で探します。中に何が書いてあるかなら grep、どこにあるかなら find です。
大文字と小文字を区別せずに探せますか?
-i を付けると区別しなくなります。ログの ERROR と error のように書き方が揺れる場合に使います。