我有这张桌子
0 56 56
0 45 100
0 70 80
60 90 90
0 100 200
0.1 200 300
在此表格中,我想计算col2
和col3
的值
awk
取决于col1
值:如果col1 < 60
开始计算col2
和
如果col3
为col1 >= 60
值,请停止并开始新计算并将值放在新列上,请说col4
和col5
。
对于第1列中的值小于60的行,应将第2列和第3列中的值添加到单独的总和中。当第1列中的行值为60或更多时,打印第2列和第3列的总和并将总和重新归零,然后打印读入的行。在输入结束时,打印第2列的剩余总和和3.
任何人都可以帮我这个吗?
输出看起来像
col4 col5
171 236 first calc
60 90 stop
300 500 sec calc
答案 0 :(得分:1)
awk '($1<60){sumc2+=$2;sumc3+=$3} ($1>=60){print sumc2, sumc3; sumc2=sumc3=0;print} END{print sumc2, sumc3}' sample.csv
sumc2
和sumc3
分别是column2和column3之和的总和。
当column1 <60时,保持对列的总结;一旦column1>> = 60,打印求和值,重置它们并打印当前输入。
由于您没有提供完整的所需输出,我打印格式
输出:
171 236
60 90 90
300 500
答案 1 :(得分:0)
$ awk '
{
if($1<60){
sum_b+=$2;
sum_c+=$3;
print $0
} else {
print $1,$2,$3,sum_b,sum_c;
sum_b=0;
sum_c=0
}
}
END {
print"","","",sum_b,sum_c
}
' datafile
0 56 56
0 45 100
0 70 80
60 90 90 171 236
0 100 200
0.1 200 300
300 500