一个Python3脚本,可以实现从某一目录下的所有文本文件例如日志中,根据关键字提取指定行,用法为python3 脚本名称 检索路径 关键字(多个关键字用逗号分隔) 关键字向上取行数 关键字向下取行数,例如:python3 findmsg.py /tmp/logs/ warn,error 5 10
import os,linecache,sys def setcolor(text,keyword): perfix = '\033[1;35m' suffix = '\033[0m' keywordlist = keyword.split(',') for i in keywordlist: text = text.replace(i,perfix+i+suffix) return text def findmsg_h(filedir,msg,unum,dnum): worklist = os.listdir(filedir) msglist = msg.split(',') for i in range(0,len(worklist)): path = os.path.join(filedir,worklist[i]) if os.path.isfile(path): print('当前查找的文件为' +path) msgfile = open(path) for nums,value in enumerate(msgfile): if all(msgtotal in value for msgtotal in msglist): print('当前匹配的关键字为'+str(msglist)) for point in range(nums-int(unum)+1,nums+int(dnum)+1+1,): linetext = linecache.getline(path,point).strip() print(point,setcolor(linetext,msg)) print('=================================================') msgfile.close() print('匹配完成') return findmsg_h(sys.argv[1],sys.argv[2],sys.argv[3],sys.argv[4])
0 条评论