awk对列/行进行统计求和
https://www.cnblogs.com/paul8339/p/9054409.html
场景】--类似于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 \t";for(j=2;j<=NF;j++)printf a[j]"\t"; 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]"\t"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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性