面试问了我这个问题,我起初用管道做出来了,面试说管道用太多了,让我用awk,我尝试着写了一下,语法都忘得差不多了。
亡羊补牢,为时未晚。今天就把那个题做出来吧,anyway, go on
有个一个文件 file,内容如下
1.1.1.1 st_000012 ajgoahgoahgoahgghg
2.2.2.2 st_000014 ajgoaoghaughughgu
3.3.3.3 st_000015 alfjoigrhuogrub
4.4.4.4 st_000016 ajgoaghkaahgoahgghg
1.1.1.1 st_000019 ajgoalllllghughgu
5.5.5.5 st_000015 alfjoigrhuogrub
找到第一列中出现最多的ip,第二列中出现最多的用户名,必须要用awk
awk ‘BEGIN{max_h=0;max_i=0}{ip[$1]++;host[$2]++};END{for(i in ip){if(ip[i]>max_i){max_i=ip[i];ip_m=i}}print max_i,ip_m;for(j in host){if(host[j]>max_h){max_h=host[j];host_m=j}}print max_h,host_m}’ file
结果
2 1.1.1.1
2 st_000015