红联Linux门户
Linux帮助

awk数组嵌套筛选数据

发布时间:2014-11-05 09:51:24来源:linux网站作者:linux人

系统环境: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]] 就是想要的结果。