grep -Hオプションの使い方|ファイル名と一致行を同時に表示する方法を解説!
生徒
「Linuxでテキストの中からキーワードを探すとき、どのファイルに書かれていたかも表示できますか?」
先生
「できますよ。grepコマンドに-Hオプションをつけると、ファイル名も一緒に表示されるようになります。」
生徒
「それは便利ですね!どうやって使えばいいか、教えてください!」
先生
「それでは、初心者向けにgrep -Hの使い方を丁寧に説明していきましょう。」
1. grepコマンドとは?
grep(グレップ)は、Linuxでテキストファイルの中から特定の文字列を検索するコマンドです。例えば、料理のレシピがたくさん入ったファイルの中から「たまご」という単語を見つけ出す、といった使い方ができます。
検索結果だけでなく、行番号やファイル名などの情報も表示できるので、Linux初心者でも効率よく作業できる便利なコマンドです。
2. -Hオプションとは?
-H(エイチ)オプションは、検索結果にファイル名も一緒に表示してくれるオプションです。
複数のファイルを対象に検索したとき、「どのファイルにヒットしたのか」がすぐに分かるようになります。
通常はファイルが複数あると自動的にファイル名も表示されますが、1つのファイルだけを検索した場合でも明示的にファイル名を出力したいときに便利です。
3. grep -H の基本的な使い方
では、実際の使用例を見てみましょう。まず、2つのテキストファイルを用意したと仮定します。
file1.txt の中身:
りんご
バナナ
オレンジ
file2.txt の中身:
パイナップル
バナナジュース
グレープ
この中から「バナナ」を探し、どのファイルにあったかも確認したいときに以下のように入力します。
grep -H バナナ file1.txt file2.txt
file1.txt:バナナ
file2.txt:バナナジュース
ポイント:ファイル名と一致した行がセットで表示されるので、あとから該当ファイルを編集・確認したいときにとても役立ちます。
4. ファイル名だけ表示したいときは?
ちなみに、-l(小文字のエル)オプションを使うと、一致したファイル名だけを表示できます。
-Hとの違いを理解して使い分けましょう。
grep -l バナナ file1.txt file2.txt
file1.txt
file2.txt
このように、実際の行は表示せず「バナナが含まれているファイル名」だけを知りたいときに便利です。
5. grep -H と cat の違い
catコマンドは、ファイルの中身をそのまま表示するだけなので、検索機能はありません。特定のキーワードを探したいときは、grepの方が断然効率的です。
特に、grep -Hのようにファイル名とセットで出力できると、大量のログファイルや設定ファイルを管理する際にも非常に助かります。
6. grep -H と他のオプションを組み合わせる
-Hは、他のオプションと組み合わせて使うとさらに便利です。
-n:一致した行の行番号を表示-i:大文字と小文字を区別せずに検索-r:ディレクトリを再帰的に検索
たとえば、「Error」という単語をディレクトリ全体から探して、どのファイルの何行目にあるかを知りたい場合は以下のようにします。
grep -Hinr error ./logs
logs/system.log:15:System error occurred
logs/db.log:34:Database Error
このように、ファイル名・行番号・一致行の内容がすべて表示されます。
7. grep -H を使う上での注意点
注意点として、1ファイルのみ指定したときは通常ファイル名が表示されませんが、-Hをつけると無理やり表示させることができます。
grep バナナ file1.txt
バナナ
grep -H バナナ file1.txt
file1.txt:バナナ
このように、ファイル名を表示したいときは-Hを忘れずに使いましょう。
8. 初心者におすすめの使い方
ログファイルや複数のテキストを扱うときに、「どのファイルにキーワードがあるのか」を素早く知りたいなら、grep -Hは本当に便利です。
特にエラーログの調査や、メモ書きの中から特定の単語を探す場面など、日常的な用途でも使えます。
最初は難しく感じるかもしれませんが、少しずつ覚えていけば、Linuxの操作がぐっと楽になります。