linux - grep 当前日期到 7 天前没有具体日期

标签 linux grep

在我的日志中,日期以 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/

相关文章:

linux - 在 Linux 中创建新线程是否复制文件描述符和套接字描述符?

bash - 为什么 grep 在脚本或命令行中使用时会产生不同的结果 - 在尝试查找 pid 时?

linux - tail 和 grep + 打印并退出第一场比赛

linux - 带有空 .vimrc 的退格键的 Vim 怪异行为

linux - 在 linux 脚本中使用变量 Ping

linux - 如何使用 s_client 将字符串发送到服务器

使用语言环境和流的 mbsrtowcs 和 wcsrtombs 的 C++ 等价物

linux - 仅在 shell 脚本中一小时后提取数据

linux - 如何使用 grep 命令搜索多个模式?

linux - 脚本/bin/bash 扩充太长并且 grep 部分在查找中不起作用