Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 仅当出现其他模式时,才在日志文件中搜索模式_Regex_Shell_Scripting_Grep_Ksh - Fatal编程技术网

Regex 仅当出现其他模式时,才在日志文件中搜索模式

Regex 仅当出现其他模式时,才在日志文件中搜索模式,regex,shell,scripting,grep,ksh,Regex,Shell,Scripting,Grep,Ksh,现在,我使用此命令获取日志文件中某个模式的出现次数 cat filename.log | grep -c 'myPattern' 问题是我只想知道两三个小时之间发生的事情。事实上,concat有两种模式识别,一种是选择文本范围以应用第二种模式识别 我尝试过这样的方法,但不起作用: cat filename.log | grep -c 'myPattern' | grep {21:,22:,23:} 我一直不明白当你连接两个或更多管道时,流量是如何变化的 日志文件示例: 20130305-22

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

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)
提前感谢。

不应使用-c选项,因为它提供匹配行数而不是匹配行文本

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

日期也应该添加到模式中,因为您的日志可能包含多天的数据


上面的一行将统计21:00-23:59:59期间的匹配条目

您的日志文件是什么样子的?粘贴一些例子。另外,您不需要
cat
I添加3行日志文件。我尝试了您的命令,但对我无效。之后,我尝试使用“cat filename.log”| grep“(21:)\\\\\\\(22:)\\\\\\\(23:)”,仅显示具有21:22:或23:模式但不起作用的行。这对我来说很有效。请注意我使用的每个括号前的“\”。但是,如何知道出现的次数,对不起,我忘了写我使用的Korn shell。结果我一无所获。我正在制作bash,所以不能说korn。。要获得计数,请使用
-c
选项,并使用第二个
grep
而不是第一个。您的答案很好,但我需要更精确,以使脚本更通用。grep-c'-2[1-3]。:*myPattern'your.log-->我想这样做,但grep发出了一条错误消息。我想在搜索模式中添加前面的“-”和后面的“:”。@JorgeVegaSánchez抱歉,我不明白你在说什么
我想在搜索模式中添加前面的“-”和后面的“:”。
你能理解你自己吗?
grep -c '^20130305-2[1-3].*myPattern' your.log