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