我有一个如下所示的日志
10-26-2016 10:00:00 INFO bla bla bla
10-26-2016 10:00:00 ERROR This is the error
error line 2
error line 3
error line 4
10-26-2016 10:00:00 INFO bla bla bla2
我需要一个sed或python命令来获取
下面的错误行==========================
his is the error
error line 2
error line 3
error line 4
==========================
这是一个巨大的文件,我无法打开该文件。请帮助。感谢
答案 0 :(得分:1)
不确定我是否理解您需要的内容,但下面是一些代码:
with open('long_file.log', 'r') as log_file:
log = log_file.read().split('\n')
for line in log:
if 'error' in line:
print (line)
输出:
10-26-2016 10:00:00 ERROR This is the error
error line 2
error line 3
error line 4
答案 1 :(得分:1)
使用GNU sed:
sed 's/^[0-9]/\n&/' file | sed -n '/ ERROR/,/^$/{s/^[0-9].* ERROR \(.*\)/\1/;/^$/d;p}'
输出:
This is the error error line 2 error line 3 error line 4
工作原理:
第一个sed命令(sed 's/^[0-9]/\n&/' file
)在以数字开头的每一行之前插入一个空行。
输出:
10-26-2016 10:00:00 INFO bla bla bla 10-26-2016 10:00:00 ERROR This is the error error line 2 error line 3 error line 4 10-26-2016 10:00:00 INFO bla bla bla2
第二个sed commnad仅打印以包含ERROR
的行开头并以空行结束的块。大括号中的部分会删除此块中的10-26-2016 10:00:00 ERROR
,并删除此块中的尾随空白行(/^$/d
)。
如果要在不同错误块之间输出空行,请删除;/^$/d
。