我正在尝试从大日志中获取两个特定日期之间的日志。
我的日志格式是
[EFMS] DEBUG [07 Apr 2014 11:07:35,225] EfmsWebSubjectFactory.createSubject(71) | HTTP Session id: B37D367C02B5411489152F5EF4D740B3
[EFMS] DEBUG [07 Apr 2014 11:07:35,226] EfmsWebSubjectFactory.createSubject(79) | Subject Context is associated to principal: None
[EFMS] DEBUG [07 Apr 2014 11:07:35,226] EfmsWebSubjectFactory.createSubject(85) | Created new subject instance for user null
[EFMS] DEBUG [07 Apr 2014 11:07:35,228] LoginController.login(53) | Login page requested
[EFMS] DEBUG [07 Apr 2014 11:07:42,636] EfmsWebSubjectFactory.createSubject(71) | HTTP Session id: B37D367C02B5411489152F5EF4D740B3
[EFMS] DEBUG [07 Apr 2014 11:07:42,636] EfmsWebSubjectFactory.createSubject(79) | Subject Context is associated to principal: None
[EFMS] DEBUG [07 Apr 2014 11:07:42,636] EfmsWebSubjectFactory.createSubject(85) | Created new subject instance for user null
我正在尝试这种方式
sed -n'/ [EFMS] DEBUG [06 Apr 2014 00:00:00 /,/ [EFMS] DEBUG [2014年4月7日00:00:00 / p'catalina.logs
它无法正常工作,请你帮帮我。
答案 0 :(得分:2)
您不需要sed
,需要grep
。除此之外,您的查询过于复杂,如果您需要在6日发生的事件,您只能搜索第6个:
grep "06 Apr 2014" catalina.logs
如果您需要指定更长的天数,可以使用正则表达式来执行此操作,例如:
grep "[1-3][0-9] Mar 2014" catalina.logs
将搜索三月份的所有参赛作品。
答案 1 :(得分:1)
无法将时间戳解析为时间秒并找到范围,这是一种简单的解析时间戳的方法。如果你只是在寻找一整天的时间,你可以这样做:
sed -n '/06 Apr 2014/,/07 Apr 2014/p' catalina.logs
您需要转义[
和]
等元字符。如果它们不存在于您的日志中,那么整个时间戳也可能不起作用。
答案 2 :(得分:0)
如果您想要任意日期范围,可以使用以下awk
脚本执行此操作:
{
mm = (index ("JanFebMarAprMayJunJulAugSepOctNovDec", $4) + 2) / 3;
if (mm < 10) { mm = "0"mm; };
dd = $3;
gsub (/\[/, "", dd);
date = $5"-"mm"-"dd;
if ((date >= from) && (date <= to)) { print; };
}
它的工作原理是将日期转换为正确的比较格式(yyyy-mm-dd
),并且只打印命令行上给出的日期之间的行。
下面是一个成绩单,其中只能看到from
和to
之间的日期(由于第一行和最后一行超出了所需的范围而被删除):
pax> cat input.txt
[EFMS] DEBUG [05 Feb 2014 11:07:35,225] EfmsWebSubjectFac...
[EFMS] DEBUG [06 Mar 2014 11:07:35,225] EfmsWebSubjectFac...
[EFMS] DEBUG [07 Apr 2014 11:07:35,225] EfmsWebSubjectFac...
[EFMS] DEBUG [07 Apr 2014 11:07:35,225] EfmsWebSubjectFac...
[EFMS] DEBUG [07 Apr 2014 11:07:35,226] EfmsWebSubjectFac...
[EFMS] DEBUG [07 Apr 2014 11:07:35,226] EfmsWebSubjectFac...
[EFMS] DEBUG [07 Apr 2014 11:07:35,228] LoginController.l...
[EFMS] DEBUG [07 Apr 2014 11:07:42,636] EfmsWebSubjectFac...
[EFMS] DEBUG [07 Apr 2014 11:07:42,636] EfmsWebSubjectFac...
[EFMS] DEBUG [07 Apr 2014 11:07:42,636] EfmsWebSubjectFac...
[EFMS] DEBUG [07 May 2014 11:07:35,225] EfmsWebSubjectFac...
[EFMS] DEBUG [07 Aug 2014 11:07:35,225] EfmsWebSubjectFac...
pax> awk -vfrom=2014-03-01 -vto=2014-05-08 -f filter.awk input.txt
[EFMS] DEBUG [06 Mar 2014 11:07:35,225] EfmsWebSubjectFac...
[EFMS] DEBUG [07 Apr 2014 11:07:35,225] EfmsWebSubjectFac...
[EFMS] DEBUG [07 Apr 2014 11:07:35,225] EfmsWebSubjectFac...
[EFMS] DEBUG [07 Apr 2014 11:07:35,226] EfmsWebSubjectFac...
[EFMS] DEBUG [07 Apr 2014 11:07:35,226] EfmsWebSubjectFac...
[EFMS] DEBUG [07 Apr 2014 11:07:35,228] LoginController.l...
[EFMS] DEBUG [07 Apr 2014 11:07:42,636] EfmsWebSubjectFac...
[EFMS] DEBUG [07 Apr 2014 11:07:42,636] EfmsWebSubjectFac...
[EFMS] DEBUG [07 Apr 2014 11:07:42,636] EfmsWebSubjectFac...
[EFMS] DEBUG [07 May 2014 11:07:35,225] EfmsWebSubjectFac...