我有一个测试文件:
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
为什么结果四舍五入? 谢谢你的解释!
答案 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