Linux

【初心者向け】Linuxのgrepコマンドで文字を検索する方法を詳しく解説

こんにちは、インフラエンジニアのryuです。

今回はLinuxのgrepコマンドについて解説します。Linuxでファイルの中から文字列を検索したい場合、grepコマンドを使用します。今回は、そのgrepコマンドの基礎的な使い方と、実践で使える便利なオプションを分かりやすく解説します。

関連【おすすめ】コマンドを打ちながらLinuxが学べるサイトInfraAcademy

サーバー構築を実践で身につけるInfraAcademy

※本ページには、プロモーション・アフィリエイトリンクが含まれています

Linuxのgrepコマンドで文字を検索する方法

Linuxのgrepコマンドで文字を検索する方法

ファイルの中身を検索したいんだけどどうしたらいいの・・・?

grepコマンドを使いましょう!使い方を解説します。

今回の記事では、grepコマンドの使い方について解説します。

Linuxでファイルの中身を検索したいときがあると思います。例えば、設定値の確認をしたり、ログファイルの中身を探したり・・・

そのような時に使えるコマンドが「grep(グレップ)」です。

今回の記事では、Linuxを使い始めの初心者の方にも分かりやすいように解説します。以下の内容をご説明いたします。

  • grepコマンドの使い方
  • 便利なgrepコマンドのオプション

では、早速使い方を解説します!

grepコマンドの使い方

grepコマンドは、Linuxでファイルの中身を検索するときに使用します。では、どのようにつかうのでしょうか?

grepコマンドは以下のように使用します

grep test test.txt
grep [正規表現/検索したい文字列] [検索するファイル]

このコマンドの動作は、”test.txt”というファイルの中から”test”という文字列を抽出します。

では、実際にtest.txtを作成して確認しましょう。一連の動作を解説します。

Linuxでgrepコマンドを使ってみる

先ほどはgrepコマンドの基本文法を解説しました。それだけでは理解できないと思うので、実際にファイルを作成して、中身を検索してみましょう。

まず、test.txtを作成します。ファイルの中身に”test”という文字列を挿入します。作成したら、catコマンドでファイルの中身を確認します。

echo "test" > test.txt
cat test.txt
→test

Linuxで実行すると以下のようになります。

echo "test" > test.txt

testファイルが作成されていますね。

では、この”test.txt”ファイルからgrepコマンドを使用して”test”という文字列を抽出してみます。

grep test test.txt
→test
grep test test.txt

testという文字列が出力されました。

これがgrepコマンドの基本的な使い方です。

ファイルの中身の文字列とgrepコマンドで指定した文字列で一致する部分を抜き出します。

しかし、これは指定したファイルの中から指定した文字列を検索しているだけです。次に紹介するgrepコマンドのオプションを知ることで、なぜgrepコマンドが便利なのかが分かるようになります。

grepコマンドのオプション

先ほどまで、grepコマンドの基本的な使い方を紹介しました。

ここからは実践編です。

grepコマンドでよく使う便利なオプションの使い方を紹介します。

grepコマンドには以下のようなオプションがあります。

  • -i 大文字小文字を区別しない
  • -r 再帰的に下位ディレクトリまで検索
  • -o パターンに一致した部分のみ抽出
  • -v パターンに一致しない行を出力
  • -q 何も出力しない
  • -E 拡張正規表現を使用
  • -F 正規表現ではなくリテラルで検索

今回はこの中から”-i”と”-r”の動作について詳しく解説します。

grep -i 大文字と小文字を区別なしで検索

“-i”のオプションを付けると大文字と小文字を区別なしで検索することができます。

では、どのような動作になるのか試してみましょう。

まず、ファイルを作成します。test1.txtというファイルに”TEST test”という文字列を入れます。

echo "TEST" > test1.txt
echo "test" >> test1.txt
cat test1.txt
→TEST
   test

そして、grepで”-i”が付いている場合とそうでない場合の挙動の違いを確認してみましょう。

grep test test1.txt
→test

grep -i test test1.txt
→TEST
   test

grep -i 大文字と小文字を区別なしで検索

“-i”を付けると大文字小文字に関係なく抽出することができました。

grep -r 再帰的に検索

最後に”-r”のオプションです。再帰的に下位フォルダを検索することができます。

では、動作の確認をしてみましょう。

まず、testdir/ディレクトリの配下にtest2.txtを作成します。

mkdir testdir
echo "test" > testdir/test2.txt

これで、testdir/test2.txtが作成されました。次に-オプション無しでgrepしてみます。そうするとエラーが出ます。

grep test tesdir
→grep: testdir: Is a directory

「grep: testdir: Is a directory」はディレクトリというエラーです。

-rのオプションを付けて、testdirディレクトリを再帰的に検索します。

grep -r test tesdir
→testdir/test2.txt:test

そうすると、testという文字列がtest2.txtにあるよ!という結果が返ってきます。

grep -r 再帰的に検索

grepなどLinuxのコマンドを勉強するならInfraAcademy

grepなどLinuxのコマンドを勉強するならInfraAcademyがおすすめです。

「Linuxの実践的な内容を学習したい」、「コマンドを打ちながらLinuxを学習したい」

そのようなご要望にお応えして、Linuxやネットワークが学習できるサイト「InfraAcademy」をリリースしました!

入門から中級まで初心者でもわかりやすく学習を進めることができます。

↓InfraAcademyの講座の一部です。

上記以外にも、DNSサーバーの構築方法や、Dockerの設定方法などさまざまな講座があります。

インフラエンジニアに必要な知識が学習できます。

InfraAcademyで学習を始める

参考:Linuxのコマンド練習用サイトのInfraAcademyを作成しました。【Linuxのコマンドをブラウザで練習しよう】

Linuxのgrepコマンドまとめ

最後におさらいです。

Linuxのgrepコマンドで文字を検索する方法は以下の通りです。

grep test test.txt
grep [正規表現/検索したい文字列] [検索するファイル]

grepコマンドを使いこなして、Linux作業のスピードを上げましょう。

https://engineer-ninaritai.com/linux-file-delete/

Linuxのその他のコマンドはこちらの記事で解説しております!ぜひ参考にしてください。

ABOUT ME
ryu@InfraAcademyというインフラ学習サービス運営
InfraAcademyというインフラエンジニア向けの学習サービスを運営しております。 インフラエンジニアからフルスタックエンジニア、PdM サーバ、ネットワーク、セキュリティ、クラウドについて投稿します。
RELATED POST