- Perl ›
- ワンライナー
Perlワンライナー - eオプションの解説
Perlでは、コマンドラインからPerlのスクリプトを実行することができるワンライナーという機能があります。WindowsではLinuxのような便利なコマンドがないので、Perlのワンライナーを使えば、似たようなことも可能です。Perlでよく利用するワンライナーを紹介します。
ワンライナーとは
コマンドラインから直接実行できる1行Perlスクリプトのこと
-e
-eを指定すると、その後に続くPerlスクリプトが直接実行される。
-n
-nを指定すると、その後に続くPerlスクリプトがwhile文で行入力演算子を使った「while(<>){ }」で囲まれたものになります。
ワンライナー解説
perl -ne "print if( /search/ )" inputfile.txt > outputfile.txt
この文は以下の、1,2 と同じ。
1: grep.pl
# 引数で与えられたファイルの各行が、<>に渡される。 # <>で受け取った各行は、ループのなかで、$_に渡される。 # 正規表現//には、$_が暗黙的に利用される # printの引数には、暗黙的に$_が利用される。 while (<>) { print if /search/; }
2: 実行
perl grep.pl inputfile.txt > outputfile.txt
Perlでgrepする 指定した文字列を含む行を抽出
ワンライナーという機能を使ってPerlで指定した文字列を含む行を抽出してみます。grepを実現するワンライナー(コマンドプロンプトから使う)
perl -ne "print if ( /search/ )" inputfile.txt > outputfile.txt
inputfile.txt
search1 kjhkh search2 lkjlkjl oiuyyiu search3
Windowsのコマンドプロンプトでcatする
今回はWindowsでLinuxのcatと同じことをするためのワンライナーを紹介します。catコマンドはファイルの内容を結合することができるコマンドです。コマンドプロンプトでcatをするには以下のようにします。
perl -ne "print" file1 file2 file3 > output.txt
ファイルの内容を結合することができました。