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
command | Linuxコマンド。 |
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プラグインが入っているか確認しています。
ほかにもいろんなオプションがありますが、普段使うのはこれくらいです。