効率よく結果を出す法則とは……?

Linuxコマンド「grep」とオプションの使い方(指定した文字列が含まれる行を検索する)

「grep」コマンドを使うと、指定した文字列が含まれる行を検索することができます。

複数のファイルの中から文字列が含まれる行を検索したり、他のコマンドの実行結果から必要な行だけを抽出したりと さまざまな場面で応用できるコマンド。

 

以下から Linuxコマンド「grep」の具体的な使い方とオプションを解説していきます。

 

目次

「grep」コマンドの基本

「grep」は以下のように検索パターンとファイル名を指定して使います。

grep 検索パターン ファイル名

 

特定のファイルから指定した文字列が含まれる行を検索する

実際にコマンドを使って文字列を検索してみましょう。

 

その前に、まずはファイルを作成していきます。

vi コマンドなどでファイルの作成・編集ができますが、Cloud9 を使っている場合はコマンドを使わなくてもエディタを使って簡単に作成できます。

メモ

Cloud9 の登録方法はこちら

Cloud9 の使い方はこちら

 

「file1.txt」という名前のファイルを作成し、ファイルを開いて内容を

aaa
bbb
ccc
ddd
eee

に編集し、保存します。

 

このファイルから「b」が含まれる行を検索してみましょう。コマンドは以下。

grep b file1.txt

 

以下のように「b」が含まれる行が表示されました。

 

他のディレクトリ(フォルダ)にあるファイルから検索する

検索対象のファイルはパスで指定することができます。

メモ

パスの詳しい解説はこちら

 

例えば「directory1」という名前のディレクトリの中にある「file1.txt」という名前のファイルから「a」という文字列が含まれる行を検索する場合は、以下のコマンドになります。

grep a directory1/file1.txt

 

複数のファイルから検索する

半角スペースで区切って複数のファイルを指定することで、それらのファイルからまとめて検索することができます。

 

例えば以下のようにすると、「file1.txt」と「file2.txt」と「file3.txt」のファイルの中から「a」という文字列が含まれる行を検索することができます。

grep a file1.txt file2.txt file3.txt

 

実行結果例

 

特定の名前が含まれるディレクトリをまとめて削除する

*(ワイルドカード)を使うことで、特定の名前が含まれているファイルをまとめて検索対象にすることができます。

 

例えば以下のようにすると、ファイル名の末尾に「.txt」がついているファイルから まとめて検索することができます。

grep a *.txt

 

また、以下は「directory1」という名前のディレクトリの中にある全てのファイルから検索する例。

grep a directory1/*

 

検索したい文字列

以下のようにパイプ(|)を使うことで、コマンド結果の中から指定した文字列が含まれている行を検索することができます。

コマンド | grep 検索パターン

 

例えば以下は、ls コマンドでカレントディレクトリのファイル一覧を取得し、「txt」が含まれる行だけ表示する例。

ls -l | grep txt

 

また、上のコマンドから さらにパイプ(|)で grep コマンドを繋げて、「txt」と「file1」が含まれる行だけ表示することもできます。

ls -l | grep txt | grep file1

メモ

ls コマンドの詳しい使い方はこちら

 

ここまでが「grep」コマンドの基本!

 

「grep」コマンドの応用

「grep」コマンドの理解をさらに深めたい方は以下もご覧ください。

(オプションの解説は順次追加していきます。)

 

-a(–text)オプション

 

-A(–after-context)オプション

 

-b(–byte-offset)オプション

 

-B(–before-context)オプション

 

–binary-files オプション

 

-c(–count)オプション

 

-C(–context)オプション

 

–color オプション

 

-d(–directories)オプション

 

-e(–regexp)オプション

 

-E(–extended-regexp)オプション

 

–exclude オプション

 

–exclude-dir オプション

 

–exclude-from オプション

 

-f(–file)オプション

 

-F(–fixed-strings)オプション

 

-G(–basic-regexp)オプション

 

-E(–extended-regexp)オプション

 

-f(–file)オプション

 

-F オプション

 

-h(–no-filename)オプション

 

-H(–with-filename)オプション

 

-i(–ignore-case)オプション

 

–include オプション

 

-l(–files-with-matches)オプション

 

-L(–files-without-match)オプション

 

–line-buffered オプション

 

-m(–max-count)オプション

 

–mmap オプション

 

-n(–line-number)オプション

 

–null オプション

 

-o(–only-matching)オプション

 

-P(–perl-regexp)オプション

 

-q(–quiet, –silent)オプション

 

-r(–recursive)オプション

 

-R(–dereference-recursive)オプション

 

-s(–no-messages)オプション

 

-u(–unix-byte-offsets)オプション

 

-U(–binary)オプション

 

-v(–invert-match)オプション

 

-V(–version)オプション

 

-w(–word-regexp)オプション

 

-x(–line-regexp)オプション

 

-y オプション

 

-Z(–decompress)オプション

 

まとめ

以上、Linuxコマンド「grep」の使い方でした!

 

ここまでの内容をまとめておきます。

  • 「grep」コマンドで指定した文字列が含まれる行を検索することができる。
  • 対象のファイルはパスで指定できる。
  • 複数のファイルを検索対象にすることができる。
  • パイプ(|)を組み合わせることで、あるコマンド結果の中から指定した文字列が含まれている行を抽出することができる。