【发布时间】:2017-05-16 15:04:40
【问题描述】:
我正在尝试计算否。为给定日期范围打印的行数。
这是我的输入和输出:
grep -inr "\[HSM \]Handle Identity Request. Send Identity Response. timeout: 1550s" *ActNac*
ActNacd.txt:47:2017-01-02 09:10:13 - [HSM ]Handle Identity Request. Send Identity Response. timeout: 1550s
old_ActNacd_2016-12-20_20-39-18.txt:171:2016-12-19 13:23:48 - [HSM ]Handle Identity Request. Send Identity Response. timeout: 1550s
old_ActNacd_2016-12-20_20-39-18.txt:217:2016-12-19 14:27:26 - [HSM ]Handle Identity Request. Send Identity Response. timeout: 1550s
old_ActNacd_2016-12-26_09-44-47.txt:47:2016-12-25 19:26:13 - [HSM ]Handle Identity Request. Send Identity Response. timeout: 1550s
old_ActNacd_2016-12-26_09-44-47.txt:91:2016-12-25 20:30:38 - [HSM ]Handle Identity Request. Send Identity Response. timeout: 1550s
old_ActNacd_2016-12-27_07-32-25.txt:47:2016-12-26 11:08:28 - [HSM ]Handle Identity Request. Send Identity Response. timeout: 1550s
old_ActNacd_2016-12-27_18-06-29.txt:47:2016-12-27 07:35:55 - [HSM ]Handle Identity Request. Send Identity Response. timeout: 1550s
old_ActNacd_2016-12-30_08-22-16.txt:48:2016-12-28 18:04:19 - [HSM ]Handle Identity Request. Send Identity Response. timeout: 1550s
old_ActNacd_2017-01-02_06-56-52.txt:47:2016-12-30 08:24:19 - [HSM ]Handle Identity Request. Send Identity Response. timeout: 1550s
old_ActNacd_2017-01-02_09-07-23.txt:47:2017-01-02 06:59:33 - [HSM ]Handle Identity Request. Send Identity Response. timeout: 1550s
我想找到号码。从日期 2017-12-20 到 2017-12-30 打印的行数。
开始日期和结束日期没有被确认,所以如果我使用像
这样的 sed 命令grep -inr "\[HSM \]Handle Identity Request. Send Identity Response. timeout: 1550s" *ActNac* | sed -n '/2016-12-20/,/2017-12-27/p'"
但如果我提供如下输入:
grep -inr "\[HSM \]Handle Identity Request. Send Identity Response. timeout: 1550s" *ActNac* | sed -n '/2016-12-19/,/2017-12-27/p'"
它没有给出任何输出,因为开始日期与作为输入日期的任何行都不匹配。没有日期为 2016-12-19 的日志文件。
sed/awk/grep 命令是否有任何其他方式来获取输入日期范围内的行数。
【问题讨论】:
-
要获取任何输出的行数,只需将输出通过管道传输到
wc -l。 -
我必须从 2012 年 20 月 27 日过滤掉正确的行,然后才能获得计数,我会使用 wc -l