- 小数の切り上げ処理という頻度の高い処理をawkで行うためのメモ
- 大体記法や速度の面において、忘れるため備忘録として記録。
結果
- 以下の内容から、方法2の方が速い。
- ただ可読性や速度の誤差の点から、方法1を利用する。
- ※forを利用した方法は、awkでは順番が変わるため記録としては除外。
内容
# テストデータ作成seq 1 0.2 100000 > number
# 最初の10行表示cat number | head-n 5
1
1.2
1.4
1.6
1.8
# 方法1 int関数を用いるcat number | awk'{r=int($1); print (r==$1) ? r : r+1}' | head-n 5
1
2
2
2
2
# 方法1の速度検証# 0.00s user 0.00s system 1% cpu 0.492 totaltime cat number | awk'{r=int($1); print (r==$1) ? r : r+1}'> /dev/null
# 方法2 printfを利用するcat number | awk'{printf("%d\n",$1+=$1<0?0:0.999)}' | head-n 5
1
2
2
2
2
# 方法2の速度検証# 0.00s user 0.00s system 0% cpu 0.476 totaltime cat number | awk'{printf("%d\n",$1+=$1<0?0:0.999)}'> /dev/null