我正在尝试使用 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/