如何使用bash脚本分组两个字段?

时间:2016-04-27 08:58:53

标签: linux bash awk

以下是一行日志的一个示例:

2016-04-24 23:59:45 -1  6bd3fbb8-65ac-4d16-bf32-48659a76c499    2           +15173583107    14      +161760555935   14      de.xxxx-O2  layxxxd 0   1

我知道如何分组归档,所以这就是解决方案:

awk '{arr[$11]+=$12} END {for (i in arr) {print i,arr[i]}}' exmaple.log

这将是结果:

xx 144
layxxxd 49.267

我的问题是,我如何按两个字段而不是一个字段进行分组,首先应该是$11,第二个是$10?所以结果应该改为:

layxxxd unknown 100
layxxxd de.xxxx-O2 44

1 个答案:

答案 0 :(得分:2)

  

如何按两个字段而不是一个字段进行分组,首先应为$11,其次为$10

您可以使用$11 FS $10作为关联数组的键:

awk '{arr[$11 FS $10] += $12} END {for (i in arr) {print i,arr[i]}}' exmaple.log