我有一个像下面这样的文件。

7404920998 May 18 04:22 20161229.data
8775804219 May 18 04:23 20161230.data
11168788265 May 17 22:07 20170103.data
9374414428 May 17 22:03 20170104.data

我想根据匹配字段 column2(月)和 column5(年)的前四个字符总结第 1 列。然后打印出每个月和年的数组。

输出:
16180725217 May 2016
20543202693 May 2017

我相信我通过传递输入想出了如何按月和按年总结
awk '{if($2 == "<month>" && $5 ~ /<year>/) i+=$1} END {print i, $2, substr($5, 0, 4)}' <file>

但是如何创建一个匹配这两个条件的条件数组并打印出我想要的输出呢?

最佳答案

awk 来救援!

$ awk   '{a[$2 FS substr($5,1,4)]+=$1}
     END {for(k in a) print a[k],k}' file | sort -k3n -k2,2M

16180725217 May 2016
20543202693 May 2017

关于bash - 根据多列匹配(某些部分)总结一列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44809508/

10-15 14:05