`grep` を使ってファイルの中から必要な語句を探す基本を学ぶレッスンです。
$ grep "Linux" hello.txt
Hello, Linux!
基本形は次の通りです。
$ grep <探したい文字> <ファイル名>
| オプション | 意味 |
|---|---|
| INLINE0 | 大文字小文字を区別しない |
| INLINE1 | ディレクトリを再帰的に検索する |
| INLINE2 | 行番号を表示する |
$ grep -i "hello" hello.txt
$ grep "Sales" documents/report.txt
ファイル名が分からないときは -r でディレクトリ全体を対象にできます。
どのファイルの何行目に見つかったかを知りたいので、-n と一緒に使うのが定番です。
$ grep -rn "TODO" documents
documents/report.txt:12:TODO: 数字を更新する
- 空白や記号を含む語 は grep "Not Found" system.log のように引用符で囲みます。
- 一致した行を数えたい ときは -c、一致しない行を見たい ときは -v を使います。
- ファイル名だけ知りたい ときは -l を付けると、中身ではなく該当ファイルの一覧が出ます。
- 何も表示されない — 一致が無いだけで、エラーではありません。-i で大文字小文字を無視すると見つかることがあります。
- 引数の順番を逆にする — 先に探したい文字、後にファイル名です。
- Is a directory と出る — ディレクトリを指定したときは -r が必要です。
障害調査では tail で直近のログを眺め、当たりが付いたら grep で該当行だけを抜き出す、
という流れが基本です。設定ファイルの中から特定の項目を探すときにも、
grep -rn "timeout" /etc のように使えます。