grep从当前日期回溯7天,无指定日期。

6 浏览
0 Comments

grep从当前日期回溯7天,无指定日期。

在我的日志中,日期以May 01 11:01:30 2018的形式保存。在grep中,我无法提供特定日期,比如grep \"May 0[1-8]\"。\n我应该如何使用grep或其他搜索命令,在当前日期的7天前搜索日志?\n例如:当前日期 - 7天前\n如果可能的话,或者是否有简单的脚本可用?\n谢谢!

0
0 Comments

问题出现的原因:

根据进一步的目标、日志类型和复杂性的不同,可能需要编写一个小脚本来解决这个问题。

解决方法:

可以参考以下示例中的链接:How to get all the log lines between two dates ranges in Linux。

我经常使用的一种方法是找到时间戳的第一次出现的行号,然后输出之间的信息。

具体操作:

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命令:

sed -n -e "${FROM_LINE},${TO_LINE} p" -e "${TO_LINE} q" ${FILE}

这将捕获堆栈跟踪、REST API内容、JSON结构等信息。

0
0 Comments

这是一段关于在日志文件中搜索从当前日期到7天前的内容的讨论。讨论中给出了一个使用grep命令的示例:grep -A 100000 "$(date +'%b %d' -d '-7 days')" myservice.log。其中,$(date +'%b %d' -d '-7 days')用于获取7天前的日期,并以指定的格式输出,grep -A用于在文件中搜索匹配的内容,并输出匹配行及之后的100000行。

问题的出现原因是需要在日志文件中搜索从当前日期到7天前的内容,但是没有给出具体的日期。解决方法是使用date命令获取7天前的日期,并将其作为grep命令的参数来搜索匹配的内容。同时使用grep命令的-A参数来获取匹配行及之后的行。

这种解决方法对于大多数日志文件都是可行的,但对于一些Hadoop框架的日志文件可能不太适用。

0