1.日志ip及访问次数,不同浏览器的筛选 2.适用于其他文件内容查找
import re
def count_patt(fname,patt):
cpatt = re.compile(patt)
patt_dirc = {}
with open(fname) as fobj:
for line in fobj:
m = cpatt.search(line)
if m:
key = m.group()
patt_dirc[key] = patt_dirc.get(key,0) +1
return patt_dirc
if __name__ == '__main__':
fname = '/etc/httpd/logs/access_log'
ip = '^(\d+\.){3}\d+'
br = 'Chrome|Firefox|MSIE'
result1 = count_patt(fname,ip)
result2 = count_patt(fname,br)
l1 = list(result1.items())
l2 = list(result2.items())
l1.sort(key=lambda sed:sed[-1],reverse=True)
l2.sort(key=lambda sed: sed[-1], reverse=True)
print(l1)
print(l2)
import re
#面向对象
class CountPatt:
def __init__(self,fname):
self.fname = fname #绑定属性
def count_patt(self,patt):
cpatt = re.compile(patt)#正则模式字符串编译
patt_dirc = {} #字典显示
with open(self.fname) as fobj:
for line in fobj:
m = cpatt.search(line)
if m:
key = m.group()
patt_dirc[key] = patt_dirc.get(key,0) +1 #value值计数
return patt_dirc
if __name__ == '__main__':
fname = '/etc/httpd/logs/access_log'
ip = '^(\d+\.){3}\d+'
br = 'Chrome|Firefox|MSIE'
cp = CountPatt(fname)
result1 = cp.count_patt(ip)
result2 = cp.count_patt(br)
l1 = list(result1.items())
l2 = list(result2.items())
l1.sort(key=lambda sed:sed[-1],reverse=True)
l2.sort(key=lambda sed: sed[-1], reverse=True)
print(l1)
print(l2)