仅在发生其他模式的情况下在日志文件中搜索模式

时间:2013-03-06 11:02:49

标签: regex shell scripting grep ksh

现在我使用此命令获取日志文件中模式的出现次数。

cat filename.log | grep -c 'myPattern'

问题是我只想知道两三个小时之间的事件。实际上,concat两种模式识别,一种是选择应用第二种模式识别的文本范围。

我尝试使用类似的东西但不起作用:

cat filename.log | grep -c 'myPattern' | grep {21:,22:,23:}

当你连接两根或更多根烟斗时,我从未理解通量是如何变化的。

日志文件示例:

20130305-22:31:36 0 0000 pcxvx28p script.ksh               1.10     FIN
20130305-22:36:36 0 0000 pcxvx28p script.ksh               1.10     DEBUT
20130305-22:31:36 0 0000 pcxvx28p script.ksh               1.10     OPERACION BUSQUEDA
20130305-22:36:36 0 0000 pcxvx28p script.ksh               1.10     numero xxx20012

注意:我使用 KornShell(ksh) 提前谢谢。

2 个答案:

答案 0 :(得分:1)

grep -c '^20130305-2[1-3].*myPattern' your.log

日期也应添加到模式中,因为您的日志可能有一天以上的数据。

上述行会在21:00 -23:59:59

期间对匹配的条目进行计数

答案 1 :(得分:0)

不应使用-c选项,因为它给出匹配行的数量而不是匹配的行文本

grep 'myPattern' filename.log | grep '\(21:\)\|\(22:\)\|\(23:\)'