欢迎光临
我们一直在努力

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

理i解 !a[$0]++ 与 !a[$1]++作用及二者区别,要了解以下两点:

1.a[$0]是未定义的,即undef

2.!优先级高于++


基于以上两点,有如下例子:

]++ 与 !a[http://img2.ph.126.net/pLiASpYRWzQDqAfq4WdCwA==/2868792962652662006.jpg…]++”>

 

1.!a[$0]++

!a[$0]++可以去除一行中重复的记录,以记录作为数组(可以将a理解为数组)索引;基于上面两点说明,这个不难理解。例子如下

]++ 与 !a[http://img1.ph.126.net/fQ982Kq0nUb3EYG53WkXuw==/649362771289050004.jpg…]++”>

从上面例子可以看出,重复的记录被删除掉,只保留重复记录中第一次出现的记录

2.!a[$1]++ 或者 !a[$2]++等等

!a[$1]++可以根据记录中某个域删除这个域相同的记录,也可以根据这个域相同,执行另外一些相应的操作。例子如下;

]++ 与 !a[http://img1.ph.126.net/rc4VO4XgGDvPf45VSuSYOQ==/977281119156469150.jpg…]++”>

从上面例子可以看出,第二个域相同的多条记录被删除,只保留重复记录中第一次出现的记录

 

例子:

1.文件中有多条重复的记录,只显示重复记录中的一条

]++ 与 !a[http://img0.ph.126.net/elx1pl6ZnjjmQvjtUYJn1g==/2834171540517331086.jpg…]++”>

2.统计(按记录统计)文件中每条记录出现的次数

]++ 与 !a[http://img0.ph.126.net/JMAOxuC3i-0-VFjtFkad0A==/1168684103320298760.jpg…]++”>

 如上图所示,按照记录统计文件中每条记录出现的次数

2.统计(按域统计)文件中某个域出现的次数,有时候可能根据日志中的IP地址来统计某个IP访问网站的次数

]++ 与 !a[http://img0.ph.126.net/adrs5ZR3qe1du_xZB-gvgg==/2395915001778831717.jpg…]++”>

 

赞(0)
【声明】:本博客不参与任何交易,也非中介,仅记录个人感兴趣的主机测评结果和优惠活动,内容均不作直接、间接、法定、约定的保证。访问本博客请务必遵守有关互联网的相关法律、规定与规则。一旦您访问本博客,即表示您已经知晓并接受了此声明通告。