Perl入門ゼミ

テキスト処理、Linuxサーバー管理、Web開発ならPerl
  1. Perl
  2. ワンライナー

ワンライナー

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

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

Giblog