grepで文字を含む行を探したい
grep -nF でログ内の文字列を検索し、一致した行を行番号付きで表示します。入力例・出力例で -n と -F の意味を確認できます。
コマンド例
grep -nF 'error' ./app.log入力例と検索結果
練習用の空のフォルダに、次の5行をテキストエディタで app.log として保存します。大切なログは上書きしないでください。そのフォルダで上のコマンドを実行します。
検索するファイル:app.log
info: startup complete
error: upload failed
ERROR: connection closed
info: retry scheduled
error: retry failed表示される結果
2:error: upload failed
5:error: retry failed先頭の 2: と 5: は元ファイルの行番号です。3行目の ERROR は大文字なので、この例の小文字 error には一致しません。元ファイルの内容は変わりません。
| 部分 | 意味 |
|---|---|
grep | 指定した文字を含む行を探し、その行全体を表示します。 |
-n | 元ファイルの何行目かを表示します。先頭行は1です。 |
-F | 検索語をそのままの文字列として扱います。たとえば . を「任意の1文字」という正規表現の意味にしません。 |
'error' | 探したい文字です。行全体との完全一致ではなく、行の一部に含まれていれば一致します。 |
./app.log | 現在のフォルダにある検索対象のファイルです。 |
ERROR も含めて探す場合
grep -niF 'error' ./app.log-i を足すと英字の大文字・小文字を区別せず、この例では2・3・5行目が表示されます。
何も表示されない場合
一致する行がないと、何も表示せず入力待ちに戻ります。検索語のつづり・大文字小文字・対象ファイルを確認しましょう。このページの検索例では、GNU grep の終了ステータス(処理結果を表す数字)は一致ありなら0、一致なしなら1、読み取りエラーなどでは2です。一致なしはファイル破損を意味しません。
フォルダ全体の中身を調べるなら フォルダ内の文字を探す方法、ファイル名を調べるなら 名前でファイルを探す方法 を参照してください。
使い方を順番に確認する練習を始めるときは、この手順に沿って進めます
使い方
- Linuxのターミナルを開き、
pwdとlsで現在地・対象を確認します。 - 例に出てくるファイル名・フォルダ名を、自分の環境に合わせます。読み取り・検索・コピー・移動の対象は、実際に存在するものを指定してください。
- 下の注意点を読んだうえでコマンドを入力し、Enterで実行します。
実行するとどうなる?
grep -nF でログ内の文字列を検索し、一致した行を行番号付きで表示します。入力例・出力例で -n と -F の意味を確認できます。 このコマンド例はファイルの内容を変更しません。
-F は正規表現ではなく文字列として検索します。大文字と小文字は区別されます。
権限に関する注意:アクセス拒否の原因を調べずに、管理者権限や sudo で実行しないでください。
うまくいかないときに確認するエラーや想定と違う結果が出たときの確認ポイント
うまくいかないとき
「No such file or directory」が出たら、現在地・名前・大文字と小文字を確認します。「Permission denied」が出たら、自分が操作してよい場所か確認してください。原因を調べずに sudo を付けないでください。
対象環境:GNU/Linux・Bash。環境やバージョンによって表示が異なる場合があります。