awk中!a[$0]++与!a[$1...]++

理i解 !a[$0]++ 与 !a[$1]++作用及二者区别,要了解以下两点:
1.a[$0]是未定义的,即undef
2.!优先级高于++

基于以上两点,有如下例子:
awk中 !a[<img src=]++ 与 !a[http://img2.ph.126.net/pLiASpYRWzQDqAfq4WdCwA==/2868792962652662006.jpg...]++">
 

1.!a[$0]++
!a[$0]++可以去除一行中重复的记录,以记录作为数组(可以将a理解为数组)索引;基于上面两点说明,这个不难理解。例子如下
awk中 !a[<img src=]++ 与 !a[http://img1.ph.126.net/fQ982Kq0nUb3EYG53WkXuw==/649362771289050004.jpg...]++">
从上面例子可以看出,重复的记录被删除掉,只保留重复记录中第一次出现的记录


2.!a[$1]++ 或者 !a[$2]++等等
!a[$1]++可以根据记录中某个域删除这个域相同的记录,也可以根据这个域相同,执行另外一些相应的操作。例子如下;
awk中 !a[<img src=]++ 与 !a[http://img1.ph.126.net/rc4VO4XgGDvPf45VSuSYOQ==/977281119156469150.jpg...]++">
从上面例子可以看出,第二个域相同的多条记录被删除,只保留重复记录中第一次出现的记录


 
例子:
1.文件中有多条重复的记录,只显示重复记录中的一条
awk中 !a[<img src=]++ 与 !a[http://img0.ph.126.net/elx1pl6ZnjjmQvjtUYJn1g==/2834171540517331086.jpg...]++">

2.统计(按记录统计)文件中每条记录出现的次数
awk中 !a[<img src=]++ 与 !a[http://img0.ph.126.net/JMAOxuC3i-0-VFjtFkad0A==/1168684103320298760.jpg...]++">
 如上图所示,按照记录统计文件中每条记录出现的次数

2.统计(按域统计)文件中某个域出现的次数,有时候可能根据日志中的IP地址来统计某个IP访问网站的次数
awk中 !a[<img src=]++ 与 !a[http://img0.ph.126.net/adrs5ZR3qe1du_xZB-gvgg==/2395915001778831717.jpg...]++">
 

分享题目:awk中!a[$0]++与!a[$1...]++
文章分享:http://hbruida.cn/article/jigeji.html