zoukankan      html  css  js  c++  java
  • awk对列/行进行统计求和【转】

    场景】--类似于excel中的sum函数对列/行进行统计求和

     A01     30  16  9   3  2  30  30  16  9   3  
     A02     14  6   1   0  7  14  14  6   1   0  
     A03     4   0   3   0  1  4   0   4   0   3  
     A09     6   3   0   0  3  6   0   6   3   0

    【要求1】--对列进行统计求和

     A01     30  16  9   3  2  30  30  16  9   3 
     A02     14  6   1   0  7  14  14  6   1   0 
     A03     4   0   3   0  1  4   0   4   0   3 
     A09     6   3   0   0  3  6   0   6   3   0 
     TOTAL  54  25   13  3  13 54  44  32  13  6 

    【要求2】--对行进行统计求和

     A01     30  16  9   3  2  30  30  16  9   3    148
     A02     14  6   1   0  7  14  14  6   1   0    63
     A03     4   0   3   0  1  4   0   4   0   3    19
     A09     6   3   0   0  3  6   0   6   3   0    27

    代码实现1

    [li0924@localhost awk]$ awk '{for(i=2;i<=NF;i++)a[i]+=$i;print}END{printf "TOTAL 	";for(j=2;j<=NF;j++)printf a[j]"	"; print""}' inputfile
     A01     30  16  9   3  2  30  30  16  9   3  
     A02     14  6   1   0  7  14  14  6   1   0  
     A03     4   0   3   0  1  4   0   4   0   3  
     A09     6   3   0   0  3  6   0   6   3   0 
    TOTAL   54      25      13      3       13      54      44      32      13      6

    【解析】

        把每列的总和用数组a[i]来表示;用for(i=2;i<=NF;i++)来打印每列的总和

    代码实现2

    [li0924@localhost awk]$ awk '{b[NR]=$0; for(i=2;i<=NF;i++)a[NR]+=$i;}END{for(i=1;i<=NR;i++) print b[i]"	"a[i]}' inputfile
     A01     30  16  9   3  2  30  30  16  9   3    148
     A02     14  6   1   0  7  14  14  6   1   0    63
     A03     4   0   3   0  1  4   0   4   0   3    19
     A09     6   3   0   0  3  6   0   6   3   0    27

    转自

    awk处理案例六 - li0924 - 博客园 http://www.cnblogs.com/lottu/p/3320443.html

  • 相关阅读:
    将数字转化为字符串
    给定一列数字将其平移n位
    判断回文数的问题
    c语言链表逆序的问题
    python中类属性和实例属性的区别
    python中__repr__()方法
    python中模块和包
    flask如何写一个model
    遍历文件夹下excel文件并且写入一个新excel
    python统计任务耗时
  • 原文地址:https://www.cnblogs.com/paul8339/p/9054409.html
Copyright © 2011-2022 走看看