grep -nオプションの使い方|一致した行の行番号を表示する基本
生徒
「テキストファイルの中で特定の文字列を探したいんですが、どの行にあるのかも知りたいです。」
先生
「それなら、Linuxのgrepコマンドに-nオプションをつけることで、何行目に一致したのかが分かりますよ。」
生徒
「なるほど!-nってどうやって使うんですか?」
先生
「では、初心者でも分かりやすい例を使って解説していきましょう。」
1. grepコマンドとは?
grep(グレップ)は、Linuxでテキストファイルの中から特定の文字列を検索するコマンドです。たとえば、メモ帳にたくさんの文章があるとして、その中から「りんご」という言葉を見つけたいときに使います。
このコマンドは、ログファイルの調査や設定ファイルの確認など、システム管理でもよく使われます。パソコンに詳しくない人でも、覚えておくと非常に便利なコマンドです。
2. -nオプションとは?
-nオプションをつけると、検索で一致した行番号を表示してくれます。
たとえば、「料理レシピ.txt」の中に「たまご」という文字が何行目にあるかを知りたい場合、grep -nが役立ちます。
行番号が分かれば、どのあたりに書かれているか一目でわかるので、大きなファイルを扱うときにとても便利です。
3. grep -n の使い方【基本例】
それでは、実際に使ってみましょう。まずは、以下のようなテキストファイルを用意したと仮定します。
sample.txt(中身の一例):
りんご
バナナ
ぶどう
りんごジュース
みかん
この中から「りんご」という文字を検索し、行番号も表示したいときは次のように入力します。
grep -n りんご sample.txt
1:りんご
4:りんごジュース
意味:1行目と4行目に「りんご」が含まれている、ということがわかります。
4. 部分一致に注意しよう
grepコマンドは、デフォルトで部分一致で検索します。
たとえば「りんご」と書いた場合、「りんごジュース」も一致対象になります。
完全に「りんご」だけの行だけを探したいときは、-wオプション(単語単位)を組み合わせましょう。
grep -n -w りんご sample.txt
1:りんご
このようにすることで、4行目の「りんごジュース」は除外され、1行目だけが表示されます。
5. 複数ファイルに使いたい場合
複数のファイルをまとめて検索したいときも、grep -nは便利です。
grep -n エラー *.log
error1.log:12:システムエラーが発生しました
error2.log:5:ネットワークエラーです
ファイル名:行番号:該当の行という形式で表示されるため、どこに問題があるかすぐに特定できます。
6. よくあるオプションの組み合わせ
grepには様々なオプションがありますが、-nと組み合わせて使うと便利なものもあります。
-i:大文字・小文字を区別しない-r:ディレクトリ内を再帰的に検索-w:単語単位で検索(前述)
例:すべてのサブディレクトリを含めて、「Error」という単語を大文字・小文字関係なく探し、行番号も出したい場合:
grep -inrw error ./logs
logs/app.log:21:Application error occurred
logs/db.log:44:Database ERROR detected
このように、組み合わせることでより柔軟に使えるようになります。
7. grep -nと他コマンドとの違い
grepの代わりに使われることがあるawkやsedでも、行番号を扱うことは可能ですが、grep -nの方が直感的で簡単です。
とくに「ただ特定の文字列が何行目にあるか知りたいだけ」のときは、grep -nが最も手軽で速い方法です。
8. 初心者へのワンポイントアドバイス
grep -nは、プログラミングをしなくても役立つツールです。たとえば、長い文章や設定ファイルの中で、「あれ、どこに書いたっけ?」となったとき、素早く場所を特定できます。
慣れてきたら、他のgrepオプションとも組み合わせて、より高度な検索にもチャレンジしてみてください。