【初心者向け】Linuxのgrepコマンドとは?基本から応用・よくあるエラー対策まで解説!

Linuxのgrepコマンドは、テキストファイルから特定の文字列を検索・抽出するために使用されるコマンドです。Linux環境で最も頻繁に使われるコマンドの一つであり、ログ解析、設定ファイルのチェック、プログラムのデバッグなど、さまざまな用途で活用できます。本記事では、grepの基本的な使い方から正規表現を使った高度な検索の仕方、さらにはsedやawkといった関連コマンドとの違いまで、初心者の方にもわかりやすく徹底解説します。

\ 2週間無料でお試しできます! /
Unix系OS専門のホスティングサービス「ミライサーバー」
Unix/Linux系VPSをこの価格で!
全プランSSD搭載でコストパフォーマンス◎
・豊富なOSラインアップ
・充実の無料サポート
VPSを使ってみる

 

grepコマンドとは

grepコマンドの役割

grepコマンドは、Linuxでテキストファイル(標準入力を含む)から指定した「検索パターン」と一致する行を抽出して表示するコマンドです。

【grepコマンドの書式】

grep [オプション] 検索パターン ファイル名

構文がシンプルで処理も軽く、大規模なログファイルや多数のテキストファイルの中から必要な情報だけを効率よく見つけ出すことが可能です。

基本的な使い方

grepコマンドの基本的な役割は、ファイルの内容を対象に、指定した「検索パターン」と一致する行を抽出して表示することです。例えば、システムログファイル(例:/var/log/syslog)から「Start」という文字列を含む行を検索する場合、以下のとおりに実行します。

grep "Start" /var/log/syslog

単純な文字列であればダブルクォート(” “)で囲まなくてもよいです。一方、スペースやシェルで特別な意味を持つ記号(* など)を含む場合は、意図しない展開を防ぐために引用符で囲むのが安全です。特に、シェルによる影響を受けにくいシングルクォート(’ ‘)を推奨します。

オプションを活用した便利な使い方

grepコマンドには、さまざまなオプションがあり、目的に応じて組み合わせることで必要な情報を素早く抽出することが可能です。grepコマンドを使いこなす第一歩として、代表的なオプションを覚えることから始めてみるとよいでしょう。

オプション概要コマンド例
-i大文字・小文字を無視して検索grep -i “error” access.log
(ERROR,error,Errorの全てが一致)
-v検索パターンに一致しない行を抽出grep -v “INFO” access.log
(INFOログを除外して表示)
-n一致した行の行番号も表示grep -n “WARNING” access.log
-rサブディレクトリ内を再帰的に検索grep -r “8080” /etc/
-l一致した内容は表示せず、パターンを含むファイル名のみ出力grep -l “DEBUG” *.log
(DEBUGを含むログファイル名だけ表示)
-cパターンに一致した行数のみ出力
※出現回数ではない
grep -c “ERROR” access.log
-A N一致した行と後(After)N行も表示grep -A 3 “FATAL” access.log (FATAL行と次の3行を表示)
-B N一致した行と前(Before)N行も表示grep -B 5 “exception” access.log

特に「-n」オプションは、一致した行番号を表示できるため、エラーが発生した箇所の特定に役立ち、「-A」や「-B」は、エラーメッセージだけでなく、その前後の文脈もまとめて確認でき、原因調査がスムーズになります。

正規表現を利用した使い方

grepは「正規表現」を利用して、検索パターンを柔軟に指定できる点が便利です。正規表現とは、文字列のパターンをひとつの文字列で表現するための記述ルールです。grepはデフォルトで「基本正規表現(Basic Regular Expression: BRE)」として解釈します。より表現力の高い「拡張正規表現(Extended Regular Expression: ERE)」を使う場合は「-E」オプション(またはegrepコマンド)を使います。

※現在egrepは非推奨のコマンドです。

grep -E [オプション] '正規表現パターン' ファイル名

または

egrep [オプション] '正規表現パターン' ファイル名

Unix/LinuxVPSで利用するなら
\2週間無料・全プランSSD搭載/
ミライサーバーを無料で試す

sed/awkとの違い

grep、sed、awkは、Linuxでよく使われる代表的なテキスト処理コマンドで、いずれも非常に強力ですが、それぞれ得意分野が異なります。この章では、grepとsed、awkそれぞれのコマンドの違いを理解し、使い分けられるようにしましょう。

grep/sed/awkの違い

sed、awkも共にLinuxサーバーでよく使用するテキスト処理のコマンドです。grepと処理および役割の違いは、以下のとおりです。

コマンド主な機能特徴
grep行の検索・抽出ファイルから特定パターンの行を抽出する
sed行の置換・編集行の置換・削除などを行い、結果を出力する
awk列ごとの集計・整形テキストを列に分割し、複雑な条件分岐や集計を行う

grepは、あくまで「検索して表示する」ことに特化しており、通常は、ファイルを変更しません。sedは、ファイルの中の文字列の追加や置換、行を削除といった文字列の加工が行えますが、デフォルトでは加工結果を標準出力に表示するだけです。ファイル自体を書き換えたい場合は -i オプションを使います。awkは、入力されたテキストを空白やタブで区切って「フィールド(列)」として扱い、$1, $2…(1列目、2列目)といった変数を使って、フィールド単位での複雑な処理や集計を行うことができます。

grep/sed/awkの使い分け

それぞれのコマンドの使い分けをまとめると以下のようになります。

    • 単なる抽出(検索して表示):grepコマンドを使用
grep "エラー" log.txt
    • 文字列の置換・編集(加工):sedコマンドを使用
sed 's/old_host/new_host/g' config.txt

※ファイル自体を書き換えたい場合は -i を付ける(実行前にバックアップ推奨)

    • データ集計/列抽出(フィールド処理):awkコマンドを使用
awk '{print $1,$3}' data.csv

※CSVはカンマや引用符の有無で崩れることがあるため、まずはTSV(タブ区切り)などシンプルな形式での利用がおすすめです。

例えば、ログファイルから「エラー行を抽出」するだけならば、grepが最適です。ログ調査や設定確認ではgrepの出番が多く、最初に覚えるコマンドとして適しています。一方、抽出後に特定の文字列を置換したい場合は、grepとsedを組み合わせる、sed単体で処理を行うことが一般的です。まずはgrepをしっかり習得し、必要に応じてsed、awkと順に学習を深めていくとよいでしょう。

Unix/LinuxVPSで利用するなら
\2週間無料・全プランSSD搭載/
ミライサーバーを無料で試す

 

grepのエラー対策

grepは便利な一方で、指定方法を誤ると意図した結果が得られなかったり、エラーメッセージが表示されたりすることがあります。ここでは、主なエラーの原因と対処法を解説します。

エラーメッセージ:No such file or directory

このエラーメッセージは、検索対象として指定したファイルやディレクトリが存在しないことを示しています。以下の例では「test.log」というファイルを指定していますが、そのファイルが見つからないため、エラーになります。

主な原因としては、下記の3つが上がられます。

    • ファイル名の入力ミス(拡張子の違い、タイプミスなど)
    • 指定したパスにファイルが存在しない(実行場所=カレントディレクトリの勘違い)
    • 相対パス/絶対パスの指定ミス

結果がなにも表示されない

コマンドを実行してもなにも結果が表示されない場合は、検索条件に一致する行が見つからなかったことを意味します。

本来はヒットするはずなのに何も表示されない場合は、検索パターンの指定や前提条件に原因があることが多いです。

    • 大文字・小文字の違い(例:Error と error)
    • 全角・半角の違い
    • 正規表現のメタ文字*、() などを文字として検索できていない

特に、正規表現で”*”や”()”などを指定したい場合は、バックスラッシュや「¥」などのエスケープシーケンスを組み合わせる必要があることを覚えておきましょう。以下の例では、「*」では検索結果として表示されないものの、「\*」と指定した場合に検索結果が得られたことを示しています。

Unix/LinuxVPSで利用するなら
\2週間無料・全プランSSD搭載/
ミライサーバーを無料で試す

grepに関するよくある質問

grepに関するよくある質問を解説します。

Q1.grepは何ができますか?

grepは、テキスト(ファイルや標準入力)から、指定した検索パターンに一致する行を抽出して表示するコマンドです。ファイル内の情報から、「どの行に特定の文字列(パターン)が含まれているか」を見つけ出し、該当行だけを表示します。

主な用途:

    • ログファイルの確認
    • エラーメッセージの特定
    • キーワードを含む設定の抽出
    • データのフィルタリング

Q2 grepにはどんな種類がありますか?

主な種類として、以下の3つがあります。検索パターンを「正規表現として扱うか」それとも「文字列そのまま(固定文字列)として扱うか」、そして正規表現として扱う場合にどの書き方ルールを使うかです。

  • grep: 標準コマンド。基本正規表現 (BRE) として解釈します。
  • grep -E (egrep): 拡張正規表現 (ERE) を使用します。+, ?, |などの記号をエスケープなしで使えます。最も一般的に使われます。
  • grep -F (fgrep): 固定文字列としてのみパターンを解釈し、正規表現を一切使いません。非常に高速な単純文字列検索に特化しています。

※なお、egrepやfgrep は現在非推奨になっています。

Q3 grepで抽出される行の行数を出力するには?

「-c」オプションを指定すれば、一致した行の件数(行数)のみを表示できます。例えば、以下の例では、access.logファイルから”ERROR”と出力された行数が出力されます。

grep -c "ERROR" access.log

※補足:-c は「出現回数」ではなく「行数」です。1行に “ERROR” が複数回含まれていても 1 行としてカウントされます。

Unix/LinuxVPSで利用するなら
\2週間無料・全プランSSD搭載/
ミライサーバーを無料で試す

 

まとめ

本記事では、grepコマンドの基本的な使い方から、オプション・正規表現・sed/awk との使い分け、よくあるつまずきポイントまでを解説しました。grepコマンドを使えば、テキストファイル内で指定した検索パターンに一致する行を抽出することができます。この機能はテキストデータを扱うLinuxサーバーの管理業務、特にログ解析や設定ファイルの確認などで広くに活用されます。grepコマンドを上手に利用するためのポイントとして、以下の3点が挙げられます。

    • 基本的なオプションを覚えて活用する
    • 他のコマンドと連携する
    • 正規表現を理解して使い分ける

まずは本記事を参考に、基本的なオプションを理解し、使ってみることから始めてみるとよいでしょう。

UnixやLinuxのVPSならミライサーバー

ミライサーバーは、アシストアップ株式会社が提供している、Unix系サーバーに特化したホスティングサービスです。

ミライサーバーのVPSでは、高速処理が可能なSSD全プランに搭載しています。

OSは、UbuntuDebianAlmaLinuxなどの豊富なラインアップから選択することができます。

2週間無料トライアルを実施しておりますので、まずはお気軽にお試しください。

▼ミライサーバーについてはこちら▼Unix系OS専門のホスティングサービス「ミライサーバー」

プランの選択でお困りの場合は、ぜひ一度お問い合わせください。

お問い合わせはこちら

VPSなら「ミライサーバー」

・全プランSSD搭載
・2週間無料

▶ ミライサーバーを無料で試す

関連記事

特集記事

TOP