Linux grep当前日期返回7天,无具体日期

Linux grep当前日期返回7天,无具体日期,linux,grep,Linux,Grep,在我的日志中,日期以2018年5月1日11:01:30的形式保存。在grep中,我无法给出具体日期,例如grep“5月0日[1-8]” 如何执行grep或其他搜索命令,从当前日期起7天内搜索日志 示例:当前日期-7天前 如果可能的话?还是简单的脚本 致以最良好的祝愿 根据您试图实现的进一步目标、日志类型和复杂性,可能需要编写一个小脚本 你可以去看看。为了快速参考,我也将在这里提供我的答案: 对于Java应用程序中的日志文件,我经常使用的另一种方法是查找第一次出现的时间戳的行号 FROM_DATE

在我的日志中,日期以2018年5月1日11:01:30的形式保存。在
grep
中,我无法给出具体日期,例如
grep“5月0日[1-8]”

如何执行
grep
或其他搜索命令,从当前日期起7天内搜索日志

示例:当前日期-7天前

如果可能的话?还是简单的脚本


致以最良好的祝愿

根据您试图实现的进一步目标、日志类型和复杂性,可能需要编写一个小脚本

你可以去看看。为了快速参考,我也将在这里提供我的答案:

对于Java应用程序中的日志文件,我经常使用的另一种方法是查找第一次出现的时间戳的行号

FROM_DATE="Wed 21 Mar 14:52:08"
TO_DATE=""Wed 21 Mar 14:53:08"

FROM_LINE=$(grep -n -m 1 ${FROM_DATE} ${FILE} | cut -d ":" -f 1)
TO_LINE=$(grep -n -m 1 ${TO_DATE} ${FILE} | cut -d ":" -f 1)
然后给出信息之间,即

tail -n "${FROM_LINE}" ${FILE} | head -n $(expr $TO_LINE - $FROM_LINE)
或通过

sed -n -e "${FROM_LINE},${TO_LINE} p" -e "${TO_LINE} q" ${FILE}
这将捕获堆栈跟踪、RESTAPI内容、JSON结构等


对于Hadoop框架中的某些应用程序,我有特定的脚本来处理它们的日志文件

我会这样做:
grep-A 100000“$(日期+“%b%d'-d'-7天”)“myservice.log

如果需要更多行,可以在其中插入大于1000000的内容


日期命令参数
+'%b%d'
提供了所需的格式,参数
-d'-7天'
提供了7天前的日期
grep-A
然后给出第一个匹配,并在文件上最后一个匹配后给出
100000行。

可能值得一读:Good catch@exic。对于Hadoop框架的一些日志可能不可行,但对于其他许多日志可能不可行。