统计访问次数

前几天面试,被问到一个很简单的统计 IP 访问次数的问题,当时脑袋卡壳了。。。没有回答出来,现记录如下。

一文件中主要内容如下,统计不同 IP 的访问次数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
192.168.10.1 2
192.168.10.2 3
192.168.10.3 4
192.168.10.4 5
192.168.10.5 6
192.168.10.6 7
192.168.10.1 2
192.168.10.2 3
192.168.10.3 4
192.168.10.4 5
192.168.10.5 6
192.168.10.6 7
192.168.10.1 2
192.168.10.2 3
192.168.10.3 4
192.168.10.4 5
192.168.10.5 6
192.168.10.6 7
192.168.10.1 2
192.168.10.2 3
192.168.10.3 4
192.168.10.4 5
192.168.10.5 6
192.168.10.6 7
192.168.10.1 2
192.168.10.2 3
192.168.10.3 4
192.168.10.4 5
192.168.10.5 6
192.168.10.6 7
  1. 使用 python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#!/bin/python3
# coding: utf-8
source = '/home/gax/ip'
ip = {}
with open(source,'r') as f:
#读文件
data = f.readlines()
for i in range(len(data)):
#截取第一列的ip作为字典的键
person = data[i].split()[0]
#截取第二列的访问次数,转换为int
nums = int(data[i].split()[1])
#如果字典不包含该键,初始化
if person not in ip:
ip[person] = 0
ip[person] += nums
print(ip)

运行结果如下:

1
{'192.168.10.1': 10, '192.168.10.2': 15, '192.168.10.3': 20, '192.168.10.4': 25, '192.168.10.5': 30, '192.168.10.6': 35}
  1. 使用 shell 脚本

awk '{a[$1]+=$2} END {for (i in a) print i ":" a[i];}' ip

运行结果如下:

1
2
3
4
5
6
192.168.10.1:10
192.168.10.2:15
192.168.10.3:20
192.168.10.4:25
192.168.10.5:30
192.168.10.6:35

: 后面为访问次数

赞赏是对作者最大的支持!
0%