grep在日志文件中使用datetime和id

时间:2018-02-15 17:17:52

标签: 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'的行,但是datetime不在那里,还有一个错误,上面写着

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 -                       收到的消息:{“Id”:“518643640”,“userId”:“3142”}       [2018-01-31 18:34:44.044] [https-jsse-nio-8443-exec-9] DEBUG c.v.w.handlers.SocketMessageHandler -                       收到的消息:{“Id”:“518643640”,“userId”:“3142”}

2 个答案:

答案 0 :(得分:0)

获得整行,

$ n="2018-01-31 18:34:44.044"
$ grep "$n" file | grep "518643640" file

目前的日期,

$ n=$(date "+%Y-%m-%d %H:%M:%S")

如果行中存在<digit>字符串,则仅获取ID date

$ grep "$n" file | grep -o -P '(?<=Id":")[0-9].*(?=",)' file

使用awk的另一个班轮:

$ awk -v var1="$n" -v var2="518643640" '($0 ~ var1 && $0 ~ var2) {print}' file

答案 1 :(得分:0)

要获取包含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"}