Grep一个单词并从日志文件中找到它在不同时间的计数

用户

包含以下数据的日志文件。在

2014-10-19 17:30:25:
Creating destination directory: "\master1\users\jamesk\Java\chapter05\tech-support-complete\doc\" 
Loading source file Error \\master1\users\jamesk\Java\chapter05\tech-support-complete\JamesKohout.java... 
onstructing Javadoc information...Error
31 Error Standard Doclet version 1.6.0_26 Error
-encoding Error
19 windows-1252 
20 -charset Error
21 windows-1252 
22 -docletpath 
2014-10-19 18:30:25:
Creating destination directory: "\master1\users\jamesk\Java\chapter05\tech-support-complete\doc\" 
Loading source file Error \\master1\users\jamesk\Java\chapter05\tech-support-complete\JamesKohout.java... 
onstructing Javadoc Error information...
31 Standard Doclet version 1.6.0_26 Error
-encoding Error
19 windows-1252 
20 -charset Error
21 windows-1252 
22 -docletpath 
2014-10-19 19:30:25:
Creating destination directory: "\master1\users\jamesk\Java\chapter05\tech-support-complete\doc\" 
Loading source file Error \\master1\users\jamesk\Java\chapter05\tech-support-complete\JamesKohout.java... 
onstructing Javadoc information...Error
31 Standard Doclet version 1.6.0_26 Error
-encoding 
19 windows-1252 
20 -charset Error
21 windows-1252 
22 -docletpath 
2014-10-19 20:30:25:
Creating destination directory:Error "\master1\users\jamesk\Java\chapter05\tech-support-complete\doc\" 
Loading source file Error \\master1\users\jamesk\Java\chapter05\tech-support-complete\JamesKohout.java... 
onstructing Javadoc information...
31 Standard Doclet version 1.6.0_26 Error
-encoding Error
19 windows-1252 
20 -charset Error
21 windows-1252 Error
22 Error -docletpath

我想用Unix/python编写一个脚本,它将单词“Error”改为灰色,并在不同的时间从上面的日志文件中找到它的字数。 文件包含不同时间的数据国际机场word Error在第一时间间隔的计数是6,第二时间间隔的计数是5,依此类推。 我希望输出为

^{pr2}$

我尝试使用以下命令,但它只给出整个文件中的总字数。在

grep -i "Error" | wc -l

请帮忙。 谢谢。在


已被浏览了6199次
更新日期: 2020-10-26 05:57:11
3 个回答
fefe Tyson

直接awk

awk '/^201[0-9].*:/{if (cont){print cont}cont=0;printf $0}/Error/{cont+=1}END{print cont}' infile

解释了code

^{pr2}$
评论 - 2020年8月7日 23:14
fefe Tyson

import re
pattern=re.compile(r"\d{4}-\d{1,2}-\d{1,2}\s+\d{1,2}:\d{1,2}:\d{1,2}:|Error",re.IGNORECASE)
ll=pattern.findall(x)
d={}
for x in ll:
    if x!="Error":
        d[x]=0
        last=x
    else:
        d[last]=d[last]+1
print d

这是你的数据或者文件.read(). 在

评论 - 2020年8月7日 23:14
fefe Tyson

简单的工作与Awk。在

awk '/^[0-9][0-9][0-9][0-9]-[01][0-9]-[0-3][0-9] [012][0-9]:[0-5][0-9]:[0-6][0-9]:/ {
       t=$0 }
    /Error/ { ++e[t] }
    END { for (s in e) print s "Error-Count=" e[s] }' logfile
评论 - 2020年8月7日 23:14

最新Python问答

推荐Python问答