おぼえがき

おぼえがき

awk 正規表現で絞込みの速度

2007-01-16 | sed awk
time awk -F" " '/正規表現/ {print $1,$5}' ${ファイル}
real 0m13.641s
user 0m13.528s
sys 0m0.127s

time awk -F" " '{print $1,$5}' ${ファイル} | grep '正規表現'
real 0m2.331s
user 0m3.505s
sys 0m0.208s


んーーー。
処理速度がぜんぜん違う。

前者のほうが、個人的には良いんだけど、この速度差を考えると、
後者だなぁ。

何でだろう。。。

って思ってたけど、

time awk -F" " 'match($5,/正規表現/) {print $1}' ${ファイル}

real 0m2.101s
user 0m1.971s
sys 0m0.136s

おおーー速くなった。
awkの組み込み関数のmatchを使えば、指定したフィールドに対して正規表現をかけて、取得したいカラムをprintできる。

こりゃ良い。

たぶん、一番初めに書いたやり方は、一行全てを正規表現に引っ掛けてるんだろう。

最新の画像もっと見る

コメントを投稿