我正在尝试使用grep命令提取包含日期和ID的行,但面临一些困难 当我使用命令
时grep "$(date+"%Y-%m-%d %H:%M:%S")" catalina_pi.log
这给了我每一行的日期,但是我正在使用像'id'这样的 这是给出包含'id'的行,但是datetime不在那里,还有一个错误,上面写着 但是在第一个命令中,这并没有给我这个错误。
所以我需要一些帮助来获得包含'datetime'和'id'的行
这是我的日志文件中的数据: 我的预期输出是 [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”} grep "$(date+"%Y-%m-%d %H:%M:%S")" catalina_pi.log | grep "518643640"
date+"%Y-%m-%d %H:%M:%S: command not found
[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}
答案 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"}