awk中 !a[$0]++ 与 !a[$1...]++
1.a[$0]是未定义的,即undef
2.!优先级高于++
基于以上两点,有如下例子:
1.!a[$0]++
!a[$0]++可以去除一行中重复的记录,以记录作为数组(可以将a理解为数组)索引;基于上面两点说明,这个不难理解。例子如下
从上面例子可以看出,重复的记录被删除掉,只保留重复记录中第一次出现的记录
2.!a[$1]++ 或者 !a[$2]++等等
!a[$1]++可以根据记录中某个域删除这个域相同的记录,也可以根据这个域相同,执行另外一些相应的操作。例子如下;
从上面例子可以看出,第二个域相同的多条记录被删除,只保留重复记录中第一次出现的记录
例子:
1.文件中有多条重复的记录,只显示重复记录中的一条
2.统计(按记录统计)文件中每条记录出现的次数
2.统计(按域统计)文件中某个域出现的次数,有时候可能根据日志中的IP地址来统计某个IP访问网站的次数