在我的日志中,日期以 May 01 11:01:30 2018
的形式保存。在 grep
中,我无法给出具体日期,例如 grep "May 0[1-8]"
。
我如何执行 grep
或其他搜索命令来搜索从当前日期往前 7 天的日志?
示例:当前日期 - 7 天前
如果可能呢?还是简单的脚本?
最好的问候!
最佳答案
根据您尝试实现的进一步目标、日志类型和复杂性,可能需要编写一个小脚本。
您可以查看 How to get all the log lines between two dates ranges in Linux .为了快速引用,我也会在这里提供我的答案:
对于 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}
这将捕获堆栈跟踪、REST API 内容、JSON 结构等。
对于某些应用程序,例如来自 Hadoop 框架的应用程序,我有特定的脚本来处理它们的日志文件。
关于linux - grep 当前日期到 7 天前没有具体日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50347508/