【Linuxコマンド】grepで特定の文字列を抽出する方法

Linuxのコマンドには、ファイルに指定した文字列が存在するか確認するのに便利なgrepコマンドがあります。

この記事では、

  • grepコマンドとは
  • grepコマンドの書き方
  • grepコマンドのパターン別使い方
  • grepコマンドの主なオプション

について解説します。

grepは指定した文字列を抽出するのに非常に便利なコマンドですので、ぜひ使い方を覚えましょう!

grepとは

shutterstock_230182939
「grep」コマンドはファイルに特定の文字列が存在するか検索するときに使われる便利なコマンドです。

例えば、ソースファイルの中に特定の変数が含まれているか調べたいとき、ファイルをいちいち開かずにgrepコマンドでファイル名のみ指定すれば文字列を検索することができます。

grepコマンドは書き方も簡単です。

$ grep 検索文字列 ファイル名

基本的にこの記述のみでファイルに指定した文字列が存在するか、検索することが可能です。

次項ではgrepコマンドの使い方を見ていきましょう。

grepの使い方

ここではgrepコマンドの使い方をパターン別に紹介します!

指定した文字列を抽出する

まずは一番オーソドックスな方法として、指定したファイルに特定の文字列が存在するか調べてみましょう。

この例では、ファイル「sample_01.txt」に”samurai”という文字列が含まれているか調べています。

$ grep samurai sample_01.txt

実行結果:
grep_image01

このように検索した文字列が存在する場合は、検索対象の文字列が表示されます。また、以下のように「ディレクトリ」を指定して、ディレクトリの中から検索文字列を含むファイルを検索することもできます。

$ grep samurai /tmp/test/*

実行結果:
grep_image02

この例ではディレクトリ「/tmp/test」の中に、指定した文字列が存在するかを確認しています。検索した文字列が存在した場合はファイルから表示されることがわかりますね!

複数のファイルから検索

「sample_01.txt」~「sample_05.txt」のような検索対象のファイルが複数存在する場合は、以下のように*(ワイルドカート)を使用すると便利です。

$ grep samurai sample_0*

実行結果:
grep_image03

このように「sample_0*」とすれば、sample_0を含むファイルを一気に検索することができますので便利ですね!

複数の文字列を検索

場合によっては複数の文字列を含む行があるか検索したい場合があります。

grepで複数の条件を指定したい場合は|(パイプ)でコマンドを繋げる方法があります。

$ grep 検索文字列1 ファイル名 | grep 検索文字列2

以下の例では、sample_0を含むファイルの中に”samurai”と”blog”が存在する行があるかを調べています。

$ grep samurai sample_0* | grep blog

実行結果:
grep_image04

このように複数条件も指定できることがわかりますね!

grepの主なオプション

ここでは、grepコマンドでよく使用する主なオプションについて紹介しますl

オプション説明
-cマッチした行数を表示する
-hマッチしたファイル名を表示しない
-i大文字小文字を区別しない
-nマッチした文字列の行番号を表示する
-sエラーメッセージを表示しない
-vマッチしない行を表示する

-cで行数を表示する

検索文字列が複数マッチした場合の行数を取得したい場合はオプション「-c」を使用します。

$ grep -c samurai sample_01.txt

実行結果:
grep_image05

マッチした行数が表示されていることが確認できます!

-nでマッチした行番号を表示する

検索文字列がマッチした場合、マッチした行番号を取得するにはオプション「-n」を使用します。

$ grep -n samurai sample_01.txt

実行結果:
grep_image6
マッチした文字列の行番号が表示されていることが確認できます!

Linuxについてもっと知りたい方へ

そもそもLinuxについて、

実はなんとなくしか理解していない…
Linuxを効率よく学習する方法が知りたい

といった情報を知りたい方は、以下の記事も参考にしてみてくださいね!


【完全保存版】エンジニア監修!Linuxおすすめ入門書7選
更新日 : 2020年7月30日

【完全保存版】Linux入門サイトおすすめ7選
更新日 : 2019年9月11日

まとめ

ここでは、指定した文字列がファイルに存在するか検索するgrepコマンドの、

  • grepコマンドとは
  • grepコマンドの書き方
  • grepコマンドのパターン別使い方
  • grepコマンドの主なオプションと使い方


について解説しました。

Linuxで開発や運用を行う場合、膨大な数のファイルを管理することになると思います。そんなとき特定の単語が存在するか確認する場合、grepコマンドが役に立ちますので使い方についてはよく覚えておきましょう。

もしgrepコマンドの使い方を忘れてしまったら、この記事を参考にしてくださいね。

「プログラミング、右も左もわからない…」という方にオススメ

当プログラミングスクール「侍エンジニア塾」では、これまで6000人以上のエンジニアを輩出してきました。

その経験を通してプログラミング学習に成功する人は、「目的目標が明確でそれに合わせた学習プランがあること」「常に相談できる人がそばにいること」「自己解決能力が身につくこと」この3つが根付いている傾向を発見しました。

侍エンジニア塾は上記3つの成功ポイントを満たすようなサービス設計に磨きをかけております。

cta_under_bnr

「自分のスタイルや目的に合わせて学習を進めたいな」とお考えの方は、ぜひチェックしてみてください。

書いた人

侍ブログ編集部

侍エンジニア塾は「人生を変えるプログラミング学習」をコンセンプトに、過去多くのフリーランスエンジニアを輩出したプログラミングスクールです。プログラミングに役立つ情報や有用な情報を発信していきます。
サービスページはこちら
ツイッターはこちら
フェイスブックはこちら

おすすめコンテンツ

まずはここから!初心者でも1から学べるプログラミング入門カリキュラム

転職成功で受講料0円!あなたもプログラミングを学んでエンジニアデビュー