ITPub博客

首页 > Linux操作系统 > Linux操作系统 > awk中 !a[$0]++ 与 !a[$1...]++

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

Linux操作系统 作者:forest7707 时间:2017-05-26 20:01:02 0 删除 编辑
理i解 !a[$0]++ 与 !a[$1]++作用及二者区别,要了解以下两点:
1.a[$0]是未定义的,即undef
2.!优先级高于++

基于以上两点,有如下例子:
awk中 !a[0]++ 与 !a[1...]++ - 小庄 - 苦海无边
 

1.!a[$0]++
!a[$0]++可以去除一行中重复的记录,以记录作为数组(可以将a理解为数组)索引;基于上面两点说明,这个不难理解。例子如下
awk中 !a[0]++ 与 !a[1...]++ - 小庄 - 苦海无边
从上面例子可以看出,重复的记录被删除掉,只保留重复记录中第一次出现的记录


2.!a[$1]++ 或者 !a[$2]++等等
!a[$1]++可以根据记录中某个域删除这个域相同的记录,也可以根据这个域相同,执行另外一些相应的操作。例子如下;
awk中 !a[0]++ 与 !a[1...]++ - 小庄 - 苦海无边
从上面例子可以看出,第二个域相同的多条记录被删除,只保留重复记录中第一次出现的记录


 
例子:
1.文件中有多条重复的记录,只显示重复记录中的一条
awk中 !a[0]++ 与 !a[1...]++ - 小庄 - 苦海无边

2.统计(按记录统计)文件中每条记录出现的次数
awk中 !a[0]++ 与 !a[1...]++ - 小庄 - 苦海无边
 如上图所示,按照记录统计文件中每条记录出现的次数

2.统计(按域统计)文件中某个域出现的次数,有时候可能根据日志中的IP地址来统计某个IP访问网站的次数
awk中 !a[0]++ 与 !a[1...]++ - 小庄 - 苦海无边
 

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/21220384/viewspace-2139950/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2017-05-17

  • 博文量
    27
  • 访问量
    20432