awk数组嵌套筛选数据


系统环境:CentOS  6.2  x86_64

内容如下:

要求:每个数据保留最初的和最后的,就是日期相同的只打印第一个和最后一个(类似打卡记录筛选)

方法:awk '{a[$1]++;b[$1,a[$1]]=$0}END{for(i in a) print b[i,1],b[i,a[i]]}' 123

解析:第一个数组a以$1下标,并累加。第二个数组b为二位数组,以$1,a[$1]为下标,并把$0赋值给b。因为a数组累加,所以相同下标的出现多少次,其值就为多少。b数组中相同第一个下标的最后一个的第二个下标就是a[第一个]的值,所以最打印的b[i,1],b[i,a[i]] 就是想要的结果。

相关内容