2019.10.09

grepコマンドとは?Linuxコマンドで文字列を検索する方法をご紹介

The word linux on wooden cubes, on a dark background, symbols signs

皆さんこんにちは!
Linuxのコマンドを使いこなしていますか?

Linuxには便利なコマンドが多数存在します。
サーバー管理に欠かせないコマンドの中から今回は、grep(グレップ)コマンドをご紹介いたします。

目次
grepコマンドとは?
grepコマンドの使い方
grepコマンドを使ってみよう!
grepコマンドを複数のファイルから使う
grepコマンドの主なオプションたち
一致しないものを検索する 【-v オプション】
大文字、小文字を区別せず検索する 【-i オプション】
マッチした行数を表示する 【-c オプション】
マッチした文字列の行番号を表示する 【-n オプション】
まとめ

grepコマンドとは?

grepコマンドとは、ファイルから特定の「文字列(文字のパターン)」が存在するかを調べたいときに利用されるLinuxコマンドです。

grepコマンドでは、検索対象として複数のファイルやディレクトリが使用できます。

また、パイプ(|)と組み合わせることによって他のコマンドの出力結果から「文字列」を絞り込むことができ非常に便利なコマンドです。

それでは、grepコマンドの使い方を見ていきましょう!

grepコマンドの使い方

grepコマンドを使ってみよう!

grepコマンドの基本書式
$grep [オプション] 文字列 ファイル名

このような記述のみで指定したファイルに文字列が存在するのかを簡単に検索することができます。

それでは、grepコマンドを使用してみましょう!

今回はこのようなファイル「sample1.txt」

$ cat sample1.txt
red
blue
yellow
green
orange
white
black

から「blue」という文字列を検索してみましょう。

実行結果
$ grep blue sample1.txt
blue

するとこのように検索した文字列が存在する場合は、検索対象の文字列が表示されます。

しかし、「pink」のように存在しない文字列を検索すると

実行結果
$ grep pink sample1.txt

というように出力がなくなります。

このようにファイル中に特定の「文字列」が存在するのかを簡単に見極めることができて便利ですよね!

続いてgrepコマンドの他の使い方も見ていきましょう。

grepコマンドを複数のファイルから使う

grepコマンドを使ってどのように1つのファイルから「文字列」を検索するのか分かったかと思います。

続いて、複数のファイルから検索してみましょう!
複数のファイルから検索するためにワイルドカード(*)を利用します。

現在のディレクトリ
$ ls
sample1.txt
sample2.txt
sample3.txt

から、先ほどと同じく「blue」という文字列を検索してみましょう。

実行結果
$ grep blue ./*
sample1.txt:blue

このようなgrepコマンドの使用方法を覚えればデータを探す際にスピードアップ間違いなしですね!!

grepコマンドの主なオプションたち

オプション 説明
-v マッチしない行を表示する
-i 大文字小文字を区別しない
-c マッチした行数を表示する
-n マッチした文字列の行番号を表示する
-q 実行結果を標準出力に表示しない
-h マッチしたファイル名を表示しない
-b パターンが何文字目にあるのかを表示する
-s エラーメッセージを表示しない

ここからいくつか具体的に使用法を見てみましょう!

一致しないものを検索する 【-v オプション】

今までは、grepコマンドを使って一致する「文字列」を検索していました。
しかし、一致しない「文字列」を検索したくなるときもありますよね。
そのときに役立つのが【-v オプション】です。

それでは、使用法を見ていきましょう。

今回もこのようなファイル「sample1.txt」を使用します。

$ cat sample1.txt
red
blue
yellow
green
orange
white
black

そこから、「blue」という文字列以外を検索してみましょう。

実行結果
$ grep -v blue sample1.txt
red
yellow
green
orange
white
black

一致しないものが検索できていることが分かりますね!

大文字、小文字を区別せず検索する 【-i オプション】

grepコマンドでは通常大文字、小文字を区別してくれます。

文字の大小を区別してくれることは助かるのですが、まれに文字の大小が分からず何度も検索することになることもありますよね・・・。

そのときに助かるのが大文字、小文字の区別なし検索【-i オプション】です!

それでは、使用法を見ていきましょう。

今回は「sample1.txt」から「BLUE」という文字列を検索してみましょう。

実行結果
$ grep -i BLUE sample1.txt
blue

文字の大小が異なっても検索できるようになりましたね!

マッチした行数を表示する 【-c オプション】

文字列そのものを検索するのではなく、何度文字列が出現したのかを知りたいという場合におススメしたいのが【-c オプション】です!

このオプションでは、文字列の「出現行数」を表示してくれます。

それでは、使用法を見ていきましょう。

今回は「sample1.txt」から「blue」という文字列の出現行数を検索してみましょう。

実行結果
$ grep -c blue sample1.txt
1

このように「出現回数」を数字で返してくれますので、シェルスクリプト等で利用できそうですね!

マッチした文字列の行番号を表示する 【-n オプション】

最後にご紹介するのが、【-n オプション】です。
このオプションでは、ファイルの中で文字列が何行目に出現したのかを表示してくれます。

それでは、使用法を見ていきましょう。

今回は「sample1.txt」から「blue」という文字列の出現行番号を検索してみましょう。

実行結果
$ grep -n blue sample1.txt
2:blue

このように行番号を同時に表示してくれるので、プログラムなどの中で文字列を検索したい場合に助かりそうですね!

まとめ

今回は、grepコマンドをご紹介させていただきました。
grepコマンドには、さまざまなオプションがあり、使いこなすことでかなり便利にサーバーを管理できるようになりそうですね。

今後もLinuxコマンドをご紹介していく予定ですので、ぜひご覧くださいね!

コマンド集
ファイルの中身を確認する「catコマンド」
ファイルやディレクトリを検索する「findコマンド」
ファイルの中身を並び替える「sortコマンド」

それでは、皆さまよりよいサーバーライフをお過ごしください!!

サーバー運用のためにコマンドを覚えることから解放されたい方へ

コマンドなしでサーバー運用できるplesk(プレスク)がオススメです

この記事を書いた人

髙松 GMOグローバルサイン・HD

2019年に総合職として新卒入社しました。
これから自分のできることを探していきたいと思っています。

プライベートでは、野球をしたり、Pythonの勉強をしたりしています。
将来は、クラウドアカデミー編集長の田(でん)さんの弟子になりたいです。

GMOクラウドアカデミーYouTubeチャンネルはこちらから

アカデミー用バナー

メルマガ会員募集中!

アカデミーの最新情報や会員限定のお得な情報をお届けします。

メルマガ登録はこちら