一般面试的时候经常会出一道题,统计nginx日志里访问量最大的10个IP。如果用awk,方法有很多,下面就是一个:
awk '{a[$1]++}END{for(i in a)print i ":" a[i]}' |sort -nr |head -n 10
但是也有一些面试官会要求面试者用python写,那么脚本可以这么写:
#!/usr/bin/env python
a={}
with open('file','r') as f:
for line in f.readlines():
IP=line.strip().split()[0]
if ip in IP:
a[ip]+=1
else:
a[ip]=1
sorted(a.iteritems(),key=lambda asd:asd[1],reverse=True)
for i in a.keys():
print i,":",a[i]
以上是python2:
sorted(a.iteritems(),key=lambda x:x[1],reverse=True)
如果是python3:
sorted(a.items(),key=lambda x:x[1],reverse=True)