微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用Find / Grep在特定时间之间search文件

我可以使用以下命令在过去10天内search日志文件

find . -type f -mtime -10 |xargs grep -i -n 'exception' 2> /dev/null

但是我想进一步限制在上午6点和下午6点之间logging的文件中的行的search。 我想知道如何修改grep命令来过滤这些如果行看起来像这样:

2012-09-04 03:50:41,658 [MainLogger: ] EXCEPTION AppLog - some exception 1 2012-09-04 10:01:32,902 [MainLogger: ] EXCEPTION AppLog - some exception 2 2012-09-04 15:39:51,901 [MainLogger: ] EXCEPTION AppLog - some exception 3 2012-09-04 18:12:51,901 [MainLogger: ] EXCEPTION AppLog - some exception 4

在上述情况下,2号线和3号线应在6点到6点之间返回。

任何帮助,将不胜感激

strftime%F在Windows上不起作用

通过Python程序将parameter passing给Cygwin

从命令行sorting不同长度的hex数字?

Windows 7上的Cygwin死于等待dll加载

删除Windows上名为“NUL”的文件

Git在没有Cygwin的Windows上?

Windows上的Cygwin的SSH ControlMaster实际上可能吗?

在windows上使用cygwin的anaconda环境

如何写一个批处理(窗口)启动Cygwin(mintty.exe),然后执行一个python脚本?

如何在Windows 10上编写Cygwin环境以编译Ada GNATColl库

一个简单的丑陋的做法可能会添加很多greps,如下所示:

find . -type f -mtime -10 |xargs grep -i -n 'exception' | grep -v " 00" | grep -v " 01" | ... | grep -v " 18" | grep -v " 19" ... 2> /dev/null

或者更简洁:

find . -type f -mtime -10 |xargs grep -i -n 'exception' | grep -v -e " (0[012345]|18|19|2[0123])" 2> /dev/null

你可以像这样破解它:

grep ' 0[6789]:| 1[01234567]| 18:00:00,000'

但是,如果您需要更多的时间处理,我建议切换到更强大的语言(例如Perl和DateTime )。

在具有适当的日期时间库的任何语言中,将所有日期转换为规范表示使得问题变得微不足道。 认的规范化是将自1970年1月1日午夜以来的秒数转换为秒。然后,看看输入行的标准数是否大于开始时间,小于结束时间。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐