ファイル内や実行結果から文字列を検索する

ファイル内や実行結果から文字列を検索する

ファイル内や実行結果から文字列を検索する

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

grepコマンドでファイル内から文字列を検索する

書式

grep  [オプション]  検索値(文字列) 検索対象のファイル

ファイル内から、特定の文字列を含む行を、検索するためのコマンドです。ファイルは複数指定することができます。

主なオプション

「/etc/services」というファイルから、wwwを含む行を検索します。

実践⓪:ファイルの中身をそのまま表示する

検索する前に、 catコマンドでファイルの中身を表示させると、量が多すぎて内容を把握できません。そのことからも、特定の内容に絞って、抽出することが大切なことがわかります。

[user01@localhost ~]$ cat /etc/services
---省略----
asipregistry    687/tcp                 # asipregistry
asipregistry    687/udp                 # asipregistry
realm-rusd      688/tcp                 # ApplianceWare managment protocol
---省略---
http            80/tcp          www www-http    # WorldWideWeb HTTP
http            80/udp          www www-http    # HyperText Transfer Protocol

実践①:文字列(www)で検索

wwwに合致する行だけ抽出します。

[user01@localhost ~]$ 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)で検索

「-i オプション」を付けることで、大文字と小文字を区別しないで、wwwを含む行を検索します。

[user01@localhost ~]$ 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

grepコマンドで実行結果から文字列を検索する

書式

コマンド名 | grep  検索値(文字列)

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

実践

「ps ax」コマンドの実行結果から、検索値「bash」に該当する行だけを抽出するため、
次のコマンドを実行ください。

[user01@localhost ~]$ ps ax | grep bash 
 1429 pts/0    Ss+    0:00 -bash
12181 pts/1    Ss     0:00 –bash
(以下省略)

NEXT>> ファイル内から開始・終了行を取得する