sed or Perl?
文字列の置換に sed を使っていたけれど、sed よりも Perl の方がいいんじゃないかと思ったわけです。だって Perl の正規表現の方が強力だし、Perl の正規表現は大体覚えているので、sed の正規表現(Perl との差)を覚えなくても済むから。
でも、気になるのが性能。Perl はスクリプトで、sed は C で書かれているコンパイル済みのプログラムだから。そこんとこ実際どうなのよ、ってことで簡単に性能を測ってみた。
入力データ
以下の文字列を5000行。input.txt というファイルに保存。
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
コマンド
sed -e 's/[A-Za-z]\+//g' input.txt > /dev/null
perl -pe 's/[A-Za-z]+//g' input.txt > /dev/null
測定方法
time コマンドで上記のコマンドを実行する。5回実行して一番早かった時間を取得する。
結果
% time sed -e 's/[A-Za-z]\+//g' input.txt > /dev/null sed -e 's/[A-Za-z]\+//g' input.txt > /dev/null 0.10s user 0.01s system 99% cpu 0.108 total
% time perl -pe 's/[A-Za-z]+//g' input.txt > /dev/null perl -pe 's/[A-Za-z]+//g' input.txt > /dev/null 0.01s user 0.01s system 98% cpu 0.020 total