awk处理案例十二--进行分段统计累加
【应用场景】--描述如下
有如下文本: account time dept: 1号 -------------------------------------------------------------------------- A4 2 60.00 A3 3 120.00 B16 6 90.00 total 11 270.00 16 10 400.00 16 2 100.00 total 12 500.00 ------------------------------------------------------------------------account time dept: 2号
-------------------------------------------------------------------------- A4 1 30.00 A3 2 80.00 B15 4 60.00 total 7 170.00 16 5 200.00 16 2 100.00 total 7 300.00 . . . .. 希望通过简短的awk计算得出如下结果(即把每个部门的“本项合计”统计累加): 1号 23 770.00 2号 14 470.00 3号…………….. 4号…………
【代码】
awk '/dept/{i++;a[i]=$4;next}/total/{x[i]+=$2;y[i]+=$3}END{for(j=1;j<=i;j++)print a[j],x[j],y[j]}'
【解析】
该代码的精华在于i的妙用!有了这个i;数组就可以全部打印出来
【测试如下】
[li0924@localhost awk]$ awk '/dept/{i++;a[i]=$4;next}/total/{x[i]+=$2;y[i]+=$3}END{for(j=1;j<=i;j++)print a[j],x[j],y[j]}' cc 1号 23 770 2号 14 470

浙公网安备 33010602011771号