ファイルで特定の文字列を抽出するコマンド!linux grepコマンドとは?

linuxでファイル中の特定の文字列を抽出したい場面が多々あります。

その際にgrepコマンドを使用し、文字列を抽出します。

本記事では、ファイル内の特定の文字列を抽出するgrepコマンドについて詳しく解説していきます。

linux初心者の方やgrepコマンドの使い方を知りたい方はぜひ、参考にしてみてください。

この記事でわかること
・linux grepコマンドとは
・linux grepコマンドの使い方
・linux grepコマンドオプション


linux grepコマンドとは

linux grepコマンドとは、ファイル内の特定の文字列を抽出するコマンドになります。

例えば、ログファイルでエラーメッセージのみを抽出したい場合に、grepコマンドでerror文字を指定することでerrorメッセージのみを抽出することができます。

ファイルの中には、ログファイルのように多くの文字列が存在するファイルもあるので、調査しやすくするためにgrepコマンドは使用されます。

この後、grepコマンドの使い方について説明していきますので、参考にしてみてください。

linux grepコマンド使い方

grepコマンドの1番シンプルな使い方は、以下のようになります。

書式
grep 検索正規表現 ファイル名

例えば、tmpディレクトリ配下のファイルすべてからtestから始まる行を検索した場合には、以下のようになります。

grep test* /tmp/*

linux grepコマンドオプション

grepコマンドをさらに便利に使うために使用するオプションについて解説していきます。

grepコマンドのオプションを知りたい方は、参考にしてみてください。

コマンド説明
-i大文字・小文字を区別しない
-E拡張正規表現で検索を行う
-e一致処理に指定した正規表現を検索する
-v一致しないものを検索する
-n検索結果に行番号を表示して検索する
-l検索結果にファイル名のみを表示する
-h検索結果にファイル名を表示しない
-rディレクトリ内も検索する
-L検索した結果該当しないファイルを表示する

-i・・・大文字・小文字を区別しない

-iオプションをつけることで大文字と小文字を区別せずに検索することができます。

書式
grep -i 検索正規表現 ファイル名

例えば、/tmp/testファイルから大文字Tと小文字tを検索したい場合には、以下のようになります。

grep -i t /tmp/test

-E・・・拡張正規表現で検索を行う

-Eオプションをつけることで拡張正規表現を使用することができます。

例えば、tかoの文字列を検索するようなor検索などもすることができます。

書式
grep -E 検索正規表現 ファイル名

/test/tmpのtかoのつく文字を検索した場合には、以下のようになります。

grep -E ‘t|o’ /tmp/test

-e・・・一致処理に指定した正規表現を検索する

-eオプションは、一致処理に指定した正規表現を行う時に使うオプションですが、orで使うことが多いです。

書式
grep -e 検索正規表現1 -e 検索正規表現2 ファイル名

/test/tmpのtかoのつく文字を検索した場合には、以下のようになります。

grep -e t -e o /tmp/test

-v・・・一致しないものを検索する

-vオプションは、一致しない文字列を検索する際に使用します。

書式
grep -v 検索正規表現 ファイル名

例えば、/tmp/testファイルでtの文字を含まないものを検索する際には以下のようになります。

grep -v t /tmp/test

-n・・・検索結果に行番号を表示して検索する

-nオプションをつけると検索結果に行番号を表示することができます。

書式
grep -n 検索正規表現 ファイル名

例えば、/tmp/testファイルのtを検索し、行番号を表示したい場合は以下のようになります。

grep -n t /tmp/test

-l・・・検索結果にファイル名のみを表示する

-lオプションをつけると検索結果にファイル名のみを表示することができます。

書式
grep -l 検索正規表現 ファイル名

例えば、/tmpディレクトリ内のtを検索し、検索結果に合致したファイル名のみを表示したい場合は以下のようになります。

grep -l t /tmp/*

-h・・・検索結果にファイル名を表示しない

-hオプションをつけると検索結果にファイル名を表示せず検索することができます。

書式
grep -h 検索正規表現 ファイル名

例えば、/tmpディレクトリ内のファイルのtを検索し、ファイル名を表示したくない場合は以下のようになります。

grep -h t /tmp/*

-r・・・ディレクトリ内も検索する

-rオプションは、ディレクトリ内も検索したい場合に使用します。

書式
grep -r 検索正規表現 ファイル名

例えば、/tmp配下のtの文字を検索したい場合は以下のようになります。

grep -r t /tmp/*

-L・・・検索した結果該当しないファイルを表示する

-Lオプションは、検索した結果該当しないファイルを表示させたい場合に使用します。

書式
grep -L 検索正規表現 ファイル名

例えば、tmpディレクトリ配下のすべてのファイルからtを検索し、該当しないファイルを表示する場合は以下のようになります。

grep -L t /tmp/*

まとめ

いかがでしたか。

本記事では、linuxでファイル内の文字を抽出することのできるgrepコマンドについて解説してきました。

業務の中でログの解析を行う際などにgrepコマンドを使用することがよくあるので覚えておきましょう。

grepコマンドについて詳しく知りたい方やlinux初心者の方はぜひ、参考にしてみてください。

【初心者エンジニア必見!エンジニアが持っておきたい持ち物・ガジェット一覧】

エンジニアにおすすめの持ち物とガジェットを一覧でまとめています。

利用することで作業効率を上げることのできる物を厳選して紹介しているため、エンジニアの方やリモート勤務の方は特に参考にしてみてください。




ABOUT US
はなちゃん
25歳インフラエンジニア5年目のはなちゃんです。 未経験からインフラエンジニアになった経験を生かしてインフラエンジニアの基礎的部分、linux、awsを中心にブログを書いています。 転職サイトを利用した転職経験もあります。 ■保有資格:LPIC lenel3・ITパスポート・AWS SAA ■業務経験:インフラ業務の設計~運用まで