Linux

【Linux】grepコマンドとは?

  • このエントリーをはてなブックマークに追加



対象読者

● Linuxコマンド初学者

要点

● grepコマンド = テキストを検索するコマンド
grep {検索するテキスト} {ファイル名・ディレクトリ名}のように利用する
-nを利用する事で該当のテキストがファイルの何行目に存在するかを確認可能

grepコマンドとは?

grepコマンドは、ファイルの中身に指定したテキストが含まれているか確認するコマンドです。
指定した1つのファイルの中身に対して検索を掛ける事も、ディレクトリを指定して、ディレクトリ配下全てのファイルに対して検索を掛ける事も可能です。

今回は基本である、単一ファイル内での検索、ディレクトリ配下のファイルに対する検索・-nコマンドを利用した検索を見ていきましょう。

単一ファイル内での検索方法

ある特定のファイルの中で検索を行いたい場合は、grep a test_a.txtのようにgrep {検索したいテキスト}{検索対象のファイル}という形式で利用します。

実際に手を動かして確認しましょう。まずはターミナル(Windowsの場合git bashなど)を開いてください。

事前準備

まずは準備をします。viコマンドを利用してデスクトップの階層にtest_a.txtを新規作成し、”This is test a!”と記載します。同様にtest_b.txt, test_c.txtも作成し、それぞれ”This is test b!”, “This is test c!”と記載しましょう。

次に、mkdirコマンドでtestというディレクトリを作成し、その配下にtest_d.txtを作りましょう。test_d.txtにも同じ形式で”This is test d!”と記載します。

デスクトップの階層とtestの階層でlsコマンドを実施し、以下のようになっていればOKです。(ファイルの中身が正常に記載されているか確認したい場合はcatコマンドでファイルの中身を出力してみましょう。)

grep_prep

正常に作成された事を確認したら準備完了です。

挙動確認

まずは、test_a.txtの中からaというテキストを検索してみましょう。
コマンドは、grep a test_a.txtです。

grep_test_a

aが含まれる行が表示されます。該当の文字が存在する場合、該当文字を含む行が出力されます。
(この例の場合text_a.txtの中身が一行ですが、複数行の記載があるファイルで実施しても該当文字を含む行のみを出力します。)

次にtest_b.txtに対してaというテキストを検索を行ってみましょう。
コマンドは、grep b test_a.txtです。

grep_test_b

test_b.txtの中にはaというテキストが存在しないため、出力がありません。

複数ファイル内での検索方法

事前準備

先程作成したファイル・ディレクトリを使用します。

挙動確認

まずは、デスクトップの階層のファイルを対象にaというテキストを検索してみましょう。
コマンドは、grep a ./*です。実行前にlsコマンドでデスクトップの階層に居る事を確認しましょう。
(*は全てのファイルを表すワイルドカードです。)

grep_desktop_all

デスクトップの階層に存在するファイルの内、aが含まれるファイル名と、該当の行が出力されます。また、検索をかける階層にディレクトリが存在する場合は、上記の様に”~~ Is a directory”というメッセージが出力されます。

次に、デスクトップの階層のファイルを対象にtestというテキストを検索してみましょう。
コマンドは、grep test ./*です。

grep_all_test

デスクトップ階層に存在するファイルに対して検索が完了しました。testというテキストはtest_a.txt, test_b.txt, test_c.txtが存在するため、それぞれのファイルの該当する行が出力されました。

注目したい点は、testディレクトリ配下に存在するtest_d.txtにもtestというテキストは存在しますが、検索は実行されません。これは、test_d.txtがgrepコマンドを実行したディレクトリ(デスクトップ)に存在しないからです。

-nオプションを付与した検索

事前準備

先程作成したファイル・ディレクトリを使用します。

挙動確認

-nオプションを付与すると、検索結果の行を出力する事が出来ます。

grep -n a test_a.txtを実行してみます。

grep_n_a

aというテキストが存在する行が行数と一緒に出力されました。

出力のコピー

出力された結果は>を利用して別ファイルに書きだす事も可能です。

事前準備

先程作成したファイル・ディレクトリを使用します。

挙動確認

grep a test_a.txt > test_a_copy.txtを実行してみましょう。実行後は、catコマンドでtest_a_copy.txtの中身を見てみましょう。

grep_copy_a

このようにgrep {検索するテキスト} {検索対象のファイル} > {出力結果を書きだすコマンド}のように利用する事で、別のファイルに結果を書きだす事が出来ます。こちらも覚えておくと便利です。

【次の記事】
wcコマンド

  • このエントリーをはてなブックマークに追加

お問い合わせ

    このサイトはreCAPTCHAによって保護されており、Googleのプライバシーポリシー利用規約が適用されます。

    コメントを残す

    *