grep コマンド:テキストファイルの内容検索

コマンドの概要

 grepコマンドは、テキストファイル内で指定したパターンに一致する行を検索し、表示するためのコマンドです。正規表現を使用して検索することができ、柔軟で強力なテキスト検索ツールとして広く利用されています。

コマンドの主なオプションと説明

オプション説明
-i大文字小文字を区別せずに検索。
-vパターンに一致しない行を表示。
-n行番号を表示。
-r再帰的にディレクトリを検索。
-e [検索文字列]検索文字列を指定する。オプションを複数回使用することでOR検索が可能。
-lマッチした行のあるファイル名のみを表示する。
-c一致した行の数を表示。
-E拡張正規表現を使用。
-Fパターンを通常の文字列として扱い、正規表現を無効にする。
主なオプションと説明

コマンドの使用例と解説

1.’/etc/services’ ファイルから 「www」という文字列を含む行を検索

この例では、’/etc/services’ ファイル内の行で「www」という文字列を含む行が表示されます。

$ grep www /etc/services
#       http://www.iana.org/assignments/port-numbers
http            80/tcp          www www-http    # WorldWideWeb HTTP
http            80/udp          www www-http    # HyperText Transfer Protocol
www-ldap-gw     1760/tcp                # www-ldap-gw
www-ldap-gw     1760/udp                # www-ldap-gw
www-dev         2784/tcp                # world wide web - development
www-dev         2784/udp                # world wide web - development
flirtmitmir     3840/tcp                # www.FlirtMitMir.de
flirtmitmir     3840/udp                # www.FlirtMitMir.de
2.大文字小文字を区別せずに `/etc/services’ ファイルから「www」という文字列を含む行を検索

-i オプションを使用することで、大文字小文字を区別せずに検索が行われます。

$ grep -i www /etc/services
#       http://www.iana.org/assignments/port-numbers
http            80/tcp          www www-http    # WorldWideWeb HTTP
http            80/udp          www www-http    # HyperText Transfer Protocol
webcache        8080/tcp        http-alt        # WWW caching service
webcache        8080/udp        http-alt        # WWW caching service
www-ldap-gw     1760/tcp                # www-ldap-gw
www-ldap-gw     1760/udp                # www-ldap-gw
www-dev         2784/tcp                # world wide web - development
www-dev         2784/udp                # world wide web - development
flirtmitmir     3840/tcp                # www.FlirtMitMir.de
flirtmitmir     3840/udp                # www.FlirtMitMir.de
3.’/etc/passwd’ ファイルからユーザー名が「taro」という行を検索

ファイル内で「taro」と一致する行が表示されます。

$ grep taro /etc/passwd
taro:x:1001:1001::/home/taro:/bin/bash
4.’/var/log/syslog’ ファイルから「error」という文字列が含まれる行を検索して行番号も表示

-n オプションを使用すると、一致した行の前に行番号が表示されます。

$ grep -n error /var/log/syslog
5.’/home’ ディレクトリ以下のファイルで再帰的に「pattern」という文字列を検索

-r オプションを使用することで、指定したディレクトリ以下を再帰的に検索します。

$ grep -r pattern /home
6.’/var/log/messages’ ファイルから 「warning」 と 「error」 という文字列を検索 (OR条件)

-e オプションを使用して、複数のパターンを指定することができます。

$ grep -e warning -e error /var/log/messages
7.検索するファイルを複数指定した検索

・メタキャラクタ「*」を指定して複数のファイルから文字列「bash」が含まれる行を検索します。

$ ls -l /etc/default/*
-rw-r--r--. 1 root root  279  1月  3 11:52 /etc/default/grub
-rw-r--r--. 1 root root 1756  5月 19  2022 /etc/default/nss
-rw-r--r--. 1 root root  119  8月  6  2019 /etc/default/useradd

$ grep bash /etc/default/*
/etc/default/useradd:SHELL=/bin/bash

 これらの例は、grepコマンドの基本的な使用法を示しています。検索対象のファイルやディレクトリ、検索条件に応じてさまざまなオプションを利用することで、柔軟かつ効果的なテキスト検索が可能です。