こんにちは、インフラエンジニアのryuです。
今回はLinuxのgrepコマンドについて解説します。Linuxでファイルの中から文字列を検索したい場合、grepコマンドを使用します。今回は、その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で実行すると以下のようになります。
testファイルが作成されていますね。
では、この”test.txt”ファイルからgrepコマンドを使用して”test”という文字列を抽出してみます。
grep test test.txt
→test
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
“-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などLinuxのコマンドを勉強するならInfraAcademy
grepなどLinuxのコマンドを勉強するならInfraAcademyがおすすめです。
「Linuxの実践的な内容を学習したい」、「コマンドを打ちながらLinuxを学習したい」
そのようなご要望にお応えして、Linuxやネットワークが学習できるサイト「InfraAcademy」をリリースしました!
入門から中級まで初心者でもわかりやすく学習を進めることができます。
- 【Linux入門講座1】ディレクトリと相対パス、絶対パス
- 【Linux入門講座2】ファイルの操作方法
- 【Linux入門講座3】ファイルのアクセス権限
- 【Linux入門講座4】ファイルの編集~vimの使い方をマスターする~
- 【Linux入門講座5】ユーザーとグループ
- 【Linux入門講座6】ネットワーク
↓InfraAcademyの講座の一部です。
上記以外にも、DNSサーバーの構築方法や、Dockerの設定方法などさまざまな講座があります。
インフラエンジニアに必要な知識が学習できます。
参考:Linuxのコマンド練習用サイトのInfraAcademyを作成しました。【Linuxのコマンドをブラウザで練習しよう】
Linuxのgrepコマンドまとめ
最後におさらいです。
Linuxのgrepコマンドで文字を検索する方法は以下の通りです。
grep test test.txt
grep [正規表現/検索したい文字列] [検索するファイル]
grepコマンドを使いこなして、Linux作業のスピードを上げましょう。
Linuxのその他のコマンドはこちらの記事で解説しております!ぜひ参考にしてください。