awk 计算各列的平均值 15
除了第一列后面的每一列都计算一下平均值,最大值或者最小值。列数不固定,下面这个只是个例子a10029944899a10029944899a10029944899a1002...
除了第一列后面的每一列都计算一下平均值,最大值或者最小值。列数不固定,下面这个只是个例子
a 100 299 448 99
a 100 299 448 99
a 100 299 448 99
a 100 299 448 99
a 100 299 448 99 展开
a 100 299 448 99
a 100 299 448 99
a 100 299 448 99
a 100 299 448 99
a 100 299 448 99 展开
1个回答
展开全部
用awk来计算,用一个关联数组sum来计算列 的数据和,假设文件为file.txt
awk '
{
for (i=2;i<=NF;++i)
{
sum[i]+=$i
if (NR == 1 || min[i] > $i) { min[i] = $i }
if (NR == 1 || max[i] < $i) { max[i] = $i}
}
colum = NF;
row = NR
}
END {
printf ("average: ");
for (i=2; i<= colum; ++i)
{
printf("%f ", sum[i]/row);
}
print ""
printf ("max: ");
for (i=2; i<= colum; ++i)
{
printf("%s ", max[i]);
}
print ""
printf ("min: ");
for (i=2; i<= colum; ++i)
{
printf("%s ", min[i]);
}
print ""
}
' file.txt
awk '
{
for (i=2;i<=NF;++i)
{
sum[i]+=$i
if (NR == 1 || min[i] > $i) { min[i] = $i }
if (NR == 1 || max[i] < $i) { max[i] = $i}
}
colum = NF;
row = NR
}
END {
printf ("average: ");
for (i=2; i<= colum; ++i)
{
printf("%f ", sum[i]/row);
}
print ""
printf ("max: ");
for (i=2; i<= colum; ++i)
{
printf("%s ", max[i]);
}
print ""
printf ("min: ");
for (i=2; i<= colum; ++i)
{
printf("%s ", min[i]);
}
print ""
}
' file.txt
追问
大神 能写清楚一点不,组合不到一起啊
追答
直接拷贝复制到文本里面,执行就好了,注意最后那个读入文件要自己改成你的文件名。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询