我有以下问题,我有一个日志文件,我想逐行读取,但为了减少行,我想过滤掉行之间的两个时间戳!
在awk中的示例:
find all between two patterns: pattern1 = 2012-10-23 14, pattern2 = 2012-10-23 16
awk '/2012-10-23 14/{P=1;next}/2012-10-23 16/{exit} P' server.log或者用白鹭和一个图案:
egrep "2012-10-23 (1[4-6]:[0-5][0-9])" server.log上面的awk线只给出了这两个时间戳之间的线。
我如何在python中不执行任何系统命令或awk、grep.,但只使用python正则表达式来实现它?
非常感谢。
发布于 2014-04-11 12:31:31
从您的awk代码中一对一地翻译:
with open('yourFile') as f:
lines = f.read().splitlines()
for l in lines:
if l.startswith('2012-10-23 14'):
p=1
elif l.startswith('2012-10-23 16'):
p=0
break
if p: print l这将在第一行以2012-10-23 14 ...匹配开始时启动输出,并在第一行以2012-10-23 16..匹配开始时停止打印。(与您的awk代码相同)
发布于 2014-04-11 14:05:23
我认为,只有假设时间戳位于行的开头,@Kent帖子才会起作用。使用AWK / egrep代码,您需要一些更通用的内容。
以下代码应该有效:
与蟒蛇呆在一起,这是有利的;-)
https://stackoverflow.com/questions/23012287
复制相似问题