ワンライナー




  1. Perl


  2. ワンライナー

 Perlでは、コマンドラインからPerlスクリプトを実行することができるワンライナーという機能があります。WindowsではLinuxのような便利なコマンドがないので、Perlワンライナーを使えば、似たようなことも可能です。Perlでよく利用するワンライナーを紹介します。

ワンライナーとは

 コマンドラインから直接実行できる1行Perlスクリプトのこと

-e

 -eを指定すると、その後に続くPerlスクリプトが直接実行される。

-n

 -nを指定すると、その後に続くPerlスクリプトが、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

Perlgrepする 指定した文字列を含む行を抽出

ワンライナーという機能を使ってPerlで指定した文字列を含む行を抽出してみます。

grepを実現するワンライナー(コマンドプロンプトから使う)
perl -ne "print if ( /search/ )" inputfile.txt > outputfile.txt
inputfile.txt
search1
kjhkh
search2
lkjlkjl
oiuyyiu
search3

Windowsコマンドプロンプトでcatする

今回はWindowsLinuxのcatと同じことをするためのワンライナーを紹介します。catコマンドはファイルの内容を結合することができるコマンドです。コマンドプロンプトでcatをするには以下のようにします。

perl -ne "print" file1 file2 file3 > output.txt

ファイルの内容を結合することができました。