nirasan's tech blog

趣味や仕事の覚え書きです。Linux, Perl, PHP, Ruby, Javascript, Android, Cocos2d-x, Unity などに興味があります。

Perlと比較したPHPのワンライナーまとめ

はじめに

  • ちょっとした集計処理やフィルタリングをするときにPerlワンライナーで処理することがよくありますが、今個人的にPHP週間なのでPHPでのワンライナーの書き方を調べて、Perlの場合とあわせてまとめてみました。

コードを1行実行する

# perl
perl -e 'print "hello world"'
# php
php -r 'print "hello world";'

標準入力から受け取った文字列を1行ずつ処理する

  • ファイルの行頭に行数をつけて表示する
# perl
cat name.txt | perl -ne 'printf "%d:%s", ++$i, $_;'
# php - $argi に行数が $argn に行毎の文字列が入る
cat name.txt | php -R 'printf("%d:%s\n", $argi, $argn);'

標準入力から受け取った文字列を1行ずつ処理する(前処理と後処理付き)

  • ファイルの行数をカウントして表示する
# perl
cat name.txt | perl -ne 'BEGIN{ my $i } $i++; END{ print $i }' 
# php - B オプションで前処理、R オプションで本処理、E オプションで後処理を書く
cat name.txt | php -B '$i = 0;' -R '$i++;' -E 'echo $i;'