我想对列的值求和,但我想重置每112行的平均值
这个程序出了什么问题
BEGIN{ sum=0;i=0}
{ sum=sum+$4
i=i+1
print i
if (i==112)
print "total " sum*8 " average " (sum/i)*8
sum=0
i=0
}
END{}
输出始终为1
答案 0 :(得分:1)
我忘记了大括号
BEGIN{ sum=0;i=0}
{ sum=sum+$4
i=i+1
print i
if (i==112)
{print "total " sum*8 " average " (sum/i)*8
sum=0
i=0
}
}
END{}
谢谢
答案 1 :(得分:1)
你可以缩短一些:
awk '
{ sum+=$4
i+=1
print i
if (i==112)
{print "total " sum*8 " average " (sum/i)*8
sum=i=0
}
}' file
您也可以使用NR
代替i
awk '
{ sum+=$4
print NR%112
if (NR%112==0)
{print "total " sum*8 " average " (sum/112)*8
sum=0
}
}' file
我看到它用它打印0
而不是行号112
,但如果需要可以修复。
答案 2 :(得分:1)
awk '{
sum+=$4
}
NR%112==0
{
a=sum*8;
print a,a/112;
sum=0;
}' your_file