ツイート
シェア
LINEで送る
B! はてぶでブックマーク
Pocketでブックマーク
RSSフィード

Linux grep, 文字列の検索と抽出。パイプと一緒に使うのは日常茶飯事。

programing image

grepコマンドはファイル内の検索だけじゃありません。コマンド結果(標準出力)だって検索・抽出できます。

Linux中級者以上になるとコマンド結果の抽出はよく使います。パイプ(|)がgrepコマンドの一部かと思うほど。

(じっさいは一部ではない。当たり前だけど。)

grepコマンドの検索は行単位です。

行の中に〇〇が含まれているか?

条件に合った行だけを抽出。

を行います。たったこれだけのコマンドです。

ファイル内検索

まずひとつは、ファイル内の検索です。grepコマンドの初級の使い方です。

grep [option] pattern file_name
optionオプション。
省略可。
pattern検索パターン。
正規表現も使える。
file_name検索するファイル名
grep test01 test.txt
----- test01 -----

test.txtファイル内で 'test01' のある行だけを抽出します。

他にもいろんなことができるのでこちらをどうぞ。

コマンド結果の検索

grepコマンドは、ファイル内の検索だけじゃありません。コマンドの実行結果(標準出力)もできます。

command | grep [option] pattern
commandLinuxコマンド。
optionオプション。
省略可。
pattern検索パターン。
正規表現も使える。

パイプ(|)を使ってコマンド結果の検索を行います。grepコマンドではファイルを指定しないことに注意。

ファイルを指定するとコマンド結果は無視され、ファイル内検索の結果が出力されます。

Linuxの中級者以上は、ほぼ毎日使っているくらい当たり前の方法です。

yum list installed | grep php
kusanagi-php7.noarch                  7.3.7-1                        @kusanagi
php.x86_64                            5.6.36-1.el7.remi              @remi-php56
php-cli.x86_64                        5.6.36-1.el7.remi              @remi-php56
php-common.x86_64                     5.6.36-1.el7.remi              @remi-php56
php-devel.x86_64                      5.6.36-1.el7.remi              @remi-php56
php-fedora-autoloader.noarch          1.0.0-1.el7.remi               @remi
php-fpm.x86_64                        5.6.36-1.el7.remi              @remi-php56
php-gd.x86_64                         5.6.36-1.el7.remi              @remi-php56
php-mbstring.x86_64                   5.6.36-1.el7.remi              @remi-php56
php-mcrypt.x86_64                     5.6.36-1.el7.remi              @remi-php56
php-mysqlnd.x86_64                    5.6.36-1.el7.remi              @remi-php56
php-opcache.x86_64                    5.6.36-1.el7.remi              @remi-php56
php-pdo.x86_64                        5.6.36-1.el7.remi              @remi-php56
php-pear.noarch                       1:1.10.5-6.el7.remi            @remi
php-pecl-apcu.x86_64                  4.0.11-2.el7.remi.5.6          @remi-php56
php-pecl-jsonc.x86_64                 1.3.10-2.el7.remi.5.6          @remi-php56
php-pecl-jsonc-devel.x86_64           1.3.10-2.el7.remi.5.6          @remi-php56
php-pecl-zip.x86_64                   1.15.2-1.el7.remi.5.6          @remi-php56
php-process.x86_64                    5.6.36-1.el7.remi              @remi-php56
php-xml.x86_64                        5.6.36-1.el7.remi              @remi-php56
php-xmlrpc.x86_64                     5.6.36-1.el7.remi              @remi-php56

CentOSにインストールされているパッケージからphpプログラム関連を抽出しています。

ちなみに、さっきのtest.txtの検索もできます。

ファイル内検索
cat test.txt | grep test01
----- test01 -----

よく使うオプション

grepコマンドでよく使うオプションをご紹介します。

-i大文字と小文字を区別しない。
-x行の完全一致。
-Gパターンに基本正規表現を使う。
-Eパターンに拡張正規表現を使う。
-vパターンに一致しないものを抽出。
条件の逆が欲しいとき使う。
-rディレクトリ指定のとき、サブディレクトリも含める。
(再帰検索)
-R再帰検索でシンボリックリンク先も含める。
php -i | grep enabled | grep -iE '(bcmath|ctype|json|mbstring|openssl|pdo|tokenizer|xml)'
BCMath support => enabled
ctype functions => enabled
DOM/XML => enabled
Multibyte decoding support using mbstring => enabled
json support => enabled
libXML streams => enabled
OpenSSL support => enabled
PDO support => enabled
PDO Driver for MySQL => enabled
PDO Driver for PostgreSQL => enabled
PDO Driver for SQLite 3.x => enabled
OpenSSL support => enabled
SimpleXML support => enabled
Tokenizer Support => enabled
XMLReader => enabled
XMLWriter => enabled

例は、Laravelフレームワークで必要なphpプラグインが入っているか確認しています。

ほかにもいろんなオプションがありますが、普段使うのはこれくらいです。

前の投稿
Linux grep, 再帰的にファイル内を検索する。パターンマッチも使える。
Linux find, ファイル・ディレクトリを探す(検索する)
次の投稿
コメントを残す

*