Linux之awk中 !a[$0]++ 与 !a[$1…]++ [转载自苦海无边博客]

  • A+
所属分类:AWK使用笔记  Linux  随手小记
摘要

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

 

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

  • a[$0]是未定义的,即undef
  • !优先级高于++

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

Linux之awk中 !a[src=
 

1:!a[$0]++

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

Linux之awk中 !a[src=
从上面例子可以看出,重复的记录被删除掉,只保留重复记录中第一次出现的记录

 

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

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

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

 

例子:

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

Linux之awk中 !a[src=
 

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

Linux之awk中 !a[src=
如上图所示,按照记录统计文件中每条记录出现的次数

 

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

Linux之awk中 !a[src=

lookback

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: