Shell 两个日期之间的日志
我正试图从一个大的圆木工厂取回两个特定日期之间的圆木 我的日志格式是Shell 两个日期之间的日志,shell,unix,logging,Shell,Unix,Logging,我正试图从一个大的圆木工厂取回两个特定日期之间的圆木 我的日志格式是 [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)
[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]调试[2014年4月6日00:00:00/,/[EFMS]调试[2014年4月7日00:00:00/p'catalina.logs
它不起作用,你能帮我一下吗。如果不将时间戳转换为历元秒并找到一个范围,就很难解析时间戳。如果你只是查找全天时间,你可以:
sed -n '/06 Apr 2014/,/07 Apr 2014/p' catalina.logs
您需要转义元字符,如
[
和]
。如果日志中不存在整个时间戳,则可能无法放置它们。如果不将时间戳转换为历元秒并找到一个范围,将无法轻松解析时间戳。如果您只是查找全天时间,则可以执行以下操作:
sed -n '/06 Apr 2014/,/07 Apr 2014/p' catalina.logs
您需要转义元字符,如
[
和]
。如果日志中不存在整个时间戳,则可能无法放置它们。您不需要sed
,您需要grep
。此外,您的查询过于复杂,如果您需要发生在6号的事件,您只能搜索6号:
grep "06 Apr 2014" catalina.logs
如果需要指定更大的天数,可以使用正则表达式,例如:
grep "[1-3][0-9] Mar 2014" catalina.logs
将从3月份开始搜索所有条目。您不需要
sed
,您需要grep
。此外,您的查询过于复杂,如果您需要发生在6日的事件,您只能搜索6日:
grep "06 Apr 2014" catalina.logs
如果需要指定更大的天数,可以使用正则表达式,例如:
grep "[1-3][0-9] Mar 2014" catalina.logs
将搜索3月份的所有条目。如果您想要任意日期范围,可以使用以下
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; };
}
如果需要任意日期范围,可以使用以下
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; };
}
抱歉,收回,我的错。抱歉,收回,我的错。**这暂时解决了我的问题**谢谢托马斯**这暂时解决了我的问题**谢谢托马斯__