grep -hオプションの使い方|ファイル名を表示せずに一致行だけを出力する方法
生徒
「Linuxで複数のファイルを検索したときに、ファイル名は表示したくないんですが、できますか?」
先生
「はい、それならgrepコマンドに-hオプションをつけると、ファイル名を表示せずに一致した行だけ出力できますよ。」
生徒
「なるほど。ファイル名がないほうが見やすい場面もありますよね。使い方を詳しく教えてください!」
先生
「それでは、初心者でも理解しやすいように、-hオプションの使い方を具体例で解説しましょう。」
1. grepコマンドとは?
grep(グレップ)は、Linuxでテキストファイルの中から特定の文字列を検索するためのコマンドです。例えば、日記の中から「旅行」という文字を探したり、設定ファイルの中から「ポート番号」などの単語を見つけることができます。
検索だけでなく、さまざまなオプションをつけることで、行番号やファイル名を表示したり、逆に非表示にしたりすることも可能です。
2. -hオプションとは?
-h(エイチ)オプションは、検索結果にファイル名を表示しないようにするためのオプションです。
通常、grepで複数のファイルを検索すると、どのファイルに一致したかを表示するため、ファイル名も一緒に出力されます。ですが、場面によっては「ファイル名はいらない、行だけ見たい」というときもありますよね。その場合に-hが活躍します。
3. grep -h の基本的な使い方
それでは、例を使って使い方を見ていきましょう。以下のような2つのファイルがあると仮定します。
file1.txt:
猫
犬
うさぎ
file2.txt:
パンダ
犬
カメ
この2つのファイルから「犬」という文字を探したときの通常の表示は次のようになります。
grep 犬 file1.txt file2.txt
file1.txt:犬
file2.txt:犬
ここで-hオプションをつけると、ファイル名が消えて、一致した行だけが表示されます。
grep -h 犬 file1.txt file2.txt
犬
犬
このように、ファイル名が表示されず、内容だけが出力されるので、特定の単語だけを一覧で見たいときに便利です。
4. grep -h の活用例と具体的な用途
grep -hは、たとえば多数の設定ファイルから特定のパラメータを探し、その値だけを抽出して一覧にしたいときなどに活躍します。
また、シェルスクリプトや自動化処理の中で使うと、無駄な情報(ファイル名)を省略して、シンプルな出力結果が得られます。
たとえば、ログファイルの中から「ERROR」を含む行だけを取り出して、あとでメールに貼り付ける場合など、ファイル名は不要なケースが多いです。
5. grep -hと-Hの違い
よく間違えられるのが、-Hとの違いです。
-hは「ファイル名を表示しない」、-Hは「ファイル名を表示する」という真逆の働きをします。
状況に応じて使い分けましょう。
6. 他のオプションと組み合わせて使う
-hオプションは、他のオプションと一緒に使うことができます。例えば、行番号も一緒に表示したい場合は、-nと併用します。
grep -h -n 犬 file1.txt file2.txt
2:犬
2:犬
このようにすれば、行番号のみ表示され、ファイル名は表示されないシンプルな出力になります。
7. grep -hを使うときの注意点
-hは複数のファイルを対象にしていても、すべてのファイル名を省略します。ですので、どのファイルにその行があったのか知りたいときには向いていません。
ファイル名が必要な場合は-H、不要な場合は-hと、用途に合わせて切り替えるのがコツです。
8. 初心者におすすめの練習方法
まずは、自分で2〜3個のテキストファイルを作って、それぞれに「同じ単語」を書いてみましょう。そして、grepで検索してみて、-hありとなしでどんな違いが出るかを確認してみてください。
目で見て確認することが、Linuxコマンドを覚える一番の近道です。