ファイル内や実行結果から文字列を検索する
ファイル内や実行結果から文字列を検索する
ファイル内や実行結果から文字列を検索する
続いてファイル内やコマンドの実行結果から、 検索対象の文字列が含まれる行を抽出する方法について学習していきます。

grepコマンドでファイル内から文字列を検索する
書式
1 | grep [オプション] 検索値(文字列) 検索対象のファイル |
ファイル内から、特定の文字列を含む行を、検索するためのコマンドです。ファイルは複数指定することができます。
主なオプション

「/etc/services」というファイルから、wwwを含む行を検索します。
実践⓪:ファイルの中身をそのまま表示する
検索する前に、 catコマンドでファイルの中身を表示させると、量が多すぎて内容を把握できません。そのことからも、特定の内容に絞って、抽出することが大切なことがわかります。
1 | [user01@localhost ~]$ cat /etc/services |
2 | ---省略---- |
3 | asipregistry 687/tcp # asipregistry |
4 | asipregistry 687/udp # asipregistry |
5 | realm-rusd 688/tcp # ApplianceWare managment protocol |
6 | ---省略--- |
7 | http 80/tcp www www-http # WorldWideWeb HTTP |
8 | http 80/udp www www-http # HyperText Transfer Protocol |
図

実践①:文字列(www)で検索
wwwに合致する行だけ抽出します。
1 | [user01@localhost ~]$ grep www /etc/services |
2 | # http://www.iana.org/assignments/port-numbers |
3 | http 80/tcp www www-http # WorldWideWeb HTTP |
4 | http 80/udp www www-http # HyperText Transfer Protocol |
5 | www-ldap-gw 1760/tcp # www-ldap-gw |
6 | www-ldap-gw 1760/udp # www-ldap-gw |
7 | ---省略--- |
図

実践②:大文字、小文字を区別しないで文字列(www)で検索
「-i オプション」を付けることで、大文字と小文字を区別しないで、wwwを含む行を検索します。
1 | [user01@localhost ~]$ grep -i www /etc/services |
2 | # http://www.iana.org/assignments/port-numbers |
3 | http 80/tcp www www-http # WorldWideWeb HTTP |
4 | http 80/udp www www-http # HyperText Transfer Protocol |
5 | webcache 8080/tcp http-alt # WWW caching service |
6 | webcache 8080/udp http-alt # WWW caching service |
7 | www-ldap-gw 1760/tcp # www-ldap-gw |
8 | www-ldap-gw 1760/udp # www-ldap-gw |
9 | www-dev 2784/tcp # world wide web - development |
10 | www-dev 2784/udp # world wide web - development |
11 | flirtmitmir 3840/tcp # www.FlirtMitMir.de |
12 | flirtmitmir 3840/udp # www.FlirtMitMir.de |
grepコマンドで実行結果から文字列を検索する
書式
1 | コマンド名 | grep 検索値(文字列) |
図

grepコマンドは、パイプ(|)と併用することが一般的です。
パイプを併用することで、コマンドの実行結果から、特定の文字列(検索値)に該当する行を取得できます。
具体的には、(パイプを介して引き渡したい)コマンドの実行結果こそが検索対象となり、grepに指定する引数が
検索値である文字列になります。

実践
「ps ax」コマンドの実行結果から、検索値「bash」に該当する行だけを抽出するため、
次のコマンドを実行ください。
1 | [user01@localhost ~]$ ps ax | grep bash |
2 | 1429 pts/0 Ss+ 0:00 - bash |
3 | 12181 pts/1 Ss 0:00 – bash |
4 | (以下省略) |