PerlのgrepはUnix/Linuxコマンドのgrepから着想を得ている
Perlにはgrepと呼ばれる関数がありますが、これは、PerlのgrepはUnix/Linuxコマンドのgrepから着想を得ています。
Unix/Linuxコマンドのgrep
Unix/Linuxコマンドのgrepの基本的な機能は、ファイルの中にある文字列を検索して、該当する行があれば、それを取り出して表示するというものです。
grep ケーキ food.txt
footd.txtの中に、ケーキが含まれる行があれば、それが、表示されます。
Perlのgrep関数
Perlのgrep関数は、Unix/Linuxコマンドのgrepから着想を得ています。
Perlのgrep関数の機能は、配列の要素で、条件に該当する要素があれば、それだけ取り出すというものです。
grepコマンドの対象が、ファイルの各行であるのに対して、Perlのgrep関数は、配列の各要素となっています。
grep関数のサンプルを書いてみます。偶数だけを取り出すサンプルです。
# grep関数で偶数のみ取り出す my @nums = (1, 2, 3, 4); my @even_nums = grep { $_ % 2 == 0 } @nums;
配列の各要素は、デフォルト変数「$_」に入ってきます。そして、偶数という条件にマッチしたものだけが、取り出された新しい配列が返されます。
Perlのgrep関数は、Unix/Linuxのgrepコマンドと、とても近い感覚で利用できます。
Perlの正規表現をgrepコマンドでも使える
Perlの正規表現は、よくある問題を簡単に解決できる機能を実装した、実用的な正規表現です。
実験的ではありますが、最近のLinuxでは「-P」オプションを使うと、Perlの正規表現をgrepコマンドでも使うことができます。
grep -P '(\.txt|\.html)$' food.txt
Perlで活用され、広く利用されるようになった、Perlの正規表現をgrepコマンド側でも使うことができます。