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

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

Perlプログラミングちゃんねるのご紹介

Perlの書籍
  • 業務に役立つPerl

    ログ解析など日本語を含むテキスト処理の実践!
    この私、Perlゼミの作者が執筆しています。
    ご購入、口コミ歓迎。
  • Perlの書籍 »
自己紹介
木本裕紀

「今日も元気だ! Perlで元気!」

Perlプログラミングちゃんねる

Youtubeチャンネル登録、いいね、コメント歓迎

Twitter
フォロー、いいね、リツート、コメント歓迎

kimoto.yuki@gmail.com
応援メッセージ、質問、間違い報告歓迎

Perl総合研究所