我想写一个脚本,它获取第一列相等的文件的两列的平均值,我用awk做了。它有效,但在输出中有指数格式数据
121323e + 2
然后我将print更改为printf并为float
awk '
NR>1{
arr[$1] += $2
arr2[$1] += $3
count[$1] += 1
}
END{
for (a in arr) {
printf "%4.3f", a " " arr[a] / count[a] " " arr2[a] / count[a]
}
}
' t1.txt > t2.txt
我对这部分有疑问:
printf "%4.3f", a " " arr[a] / count[a] " " arr2[a] / count[a]
输出:
0001204.0001125.0001118.0001053.0001046.0001039.000901.000822.000815.000808.000750
我想要的
0001 204.000 1125.000
1118.000 1053.000 1046.000
1039.000 901.000 822.000
815.000 808.000 750
答案 0 :(得分:2)
假设代码的其余部分符合您的要求,您应该将printf
更改为以下内容:
printf "%4.3f %4.3f %4.3f\n", a, arr[a] / count[a], arr2[a] / count[a]
这里我为每个要插入的值包含了一个格式说明符,并在结尾添加了换行符\n
。然后用逗号分隔每个值。