linux - 在日志文件中使用日期时间和 ID 进行 Grep

标签 linux grep

我正在尝试使用 grep 命令提取包含日期和 ID 的行,但遇到一些困难。
当我使用命令时

grep "$(date+"%Y-%m-%d %H:%M:%S")" catalina_pi.log

这给了我每一行的日期,但是当我用像

这样的“id”做管道时
grep "$(date+"%Y-%m-%d %H:%M:%S")" catalina_pi.log | grep "518643640"

这是给出包含“id”的行,但日期时间不存在,并且还有一个错误

date+"%Y-%m-%d %H:%M:%S: command not found

但是在第一个命令中,这并没有给我那个错误。 所以我需要一些帮助来获取包含“datetime”和“id”的行。
这是我的日志文件中的数据:

[2018-01-31 18:34:44.044] [https-jsse-nio-8443-exec-9] DEBUG c.v.w.handlers.SocketMessageHandler -
                Message received : {"Id":"518643640","userId":"3142"}  
[2018-01-31 18:34:44.044] [https-jsse-nio-8443-exec-9] DEBUG c.v.w.handlers.SocketMessageHandler -
                Message received : {"Id":"518643640","userId":"3142"}  
[2018-01-31 18:34:44.044] [https-jsse-nio-8443-exec-9] DEBUG c.v.w.handlers.SocketMessageHandler -
                Sending message : {"id":301,"errorCode":403,"description":null}  

我的预期输出是

[2018-01-31 18:34:44.044] [https-jsse-nio-8443-exec-9] DEBUG c.v.w.handlers.SocketMessageHandler - Message received : {"Id":"518643640","userId":"3142"}
[2018-01-31 18:34:44.044] [https-jsse-nio-8443-exec-9] DEBUG c.v.w.handlers.SocketMessageHandler - Message received : {"Id":"518643640","userId":"3142"}

最佳答案

要获取包含 ID 的行及其前面包含 DATE 的行,请使用以下命令。

grep <id> -B1

-B1 选项将在包含搜索字符串的行之前打印一行。

例子:

grep "518643640" -B1

将为您提供以下输出:

[2018-01-31 18:34:44.044] [https-jsse-nio-8443-exec-9] DEBUG c.v.w.handlers.SocketMessageHandler -
            Message received : {"Id":"518643640","userId":"3142"}  
[2018-01-31 18:34:44.044] [https-jsse-nio-8443-exec-9] DEBUG c.v.w.handlers.SocketMessageHandler -
            Message received : {"Id":"518643640","userId":"3142"}  

关于linux - 在日志文件中使用日期时间和 ID 进行 Grep,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48812865/

相关文章:

linux - 定位命令与查找命令有何不同?

linux - node.js 中的 seteuid

将 mysql 升级到 v5.7 后,PHP 在 Ubuntu 中出现问题

regex - 跨行替换正则表达式,保留换行符?

linux - 如何尾部所有文件并通过通配符名称排除某些文件?

c++ - Linux 透明窗口

c++ - 类型转换与 memcpy() : which one is better?

string - 我如何根据字符串打印整列。 (随机列数)

linux - 如何 grep 特定行

regex - grep那些包含单引号的匹配行