AWK。舍入分裂的结果

时间:2013-06-20 11:13:50

标签: awk division

我有一个测试文件:

user1   230230  1970
user2   313221  1978
user5   212334  1924
user3   313221  1987
user4   212345  1999
user3   123456  1983
user5   121212  1903
user2   234234  1992
user3   124690  1922
user5   092343  1945

当我运行此脚本时:

 awk 'BEGIN{OFMT="%.2f"}{user_arr[$1]+=$2;user_arr_count[$1]+=1;}END{for (el in user_arr) {n=user_arr[el]/user_arr_count[el];print n}}' test

我得到了结果

230230
273727.50
187122.33
212345
141963

但如果我跑

awk 'BEGIN{OFMT="%.2f"}{user_arr[$1]+=$2;user_arr_count[$1]+=1;}END{for (el in user_arr) {n=user_arr[el]/user_arr_count[el];print n" "el}}' test

我得到了回合值:

230230 user1
273728 user2
187122 user3
212345 user4
141963 user5

为什么结果四舍五入? 谢谢你的解释!

1 个答案:

答案 0 :(得分:3)

在第一个脚本中,您打印的值为n,而awk知道将其视为一个数字但是在第二个脚本中您打印的n" "el被视为字符串,因为你正在使用字符串连接。你想要做的是print n,el

我会编写脚本:

$ awk '{u[$1]+=$2;c[$1]+=1}END{for(i in u)print i,u[i]/c[i]}' OFMT="%.2f" file
user1 230230
user2 273727.50
user3 187122.33
user4 212345
user5 141963