json - awk json 日志文件大于一次

标签 json linux search awk command

我有一个日志文件,每一行都是一个长 json 字典。所有日志的长度都不相同,但它们都有一个'_time_' 键,它是一个以毫秒 为单位的纪元时间。我想在此日志文件中搜索以提取大于 1450616426(second)等时间的日志。一些日志示例是:

{'id':Bob, 'last-login':'...', '_time_':1444211444123456, ...}
{'name':'ehsan', 'family':'toghian', 'last-login':'2015-4-12', '_time_': 1444215425123465, .....}

如何编写 awk 命令?先谢谢了。

最佳答案

$ cat tst.awk
{
    milli = $0
    sub(/.*_time_[^[:digit:]]+/,"",milli)
    sub(/[^[:digit:]].*/,"",milli)
    secs = milli / 1000
}
secs > tgt

$ awk -v tgt=1450616426 -f tst.awk file
{'id':Bob, 'last-login':'...', '_time_':1444211444123456, ...}
{'name':'ehsan', 'family':'toghian', 'last-login':'2015-4-12', '_time_': 1444215425123465, .....}

或使用 GNU awk for gensub():

$ awk -v tgt=1450616426 '(gensub(/.*_time_[^[:digit:]]+([[:digit:]]+).*/,"\\1",1) / 1000) > tgt' file
{'id':Bob, 'last-login':'...', '_time_':1444211444123456, ...}
{'name':'ehsan', 'family':'toghian', 'last-login':'2015-4-12', '_time_': 1444215425123465, .....}

关于json - awk json 日志文件大于一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34381305/

相关文章:

Jquery:有标题但没有单词

iphone - NSURLConnection 和 JSON 数据

javascript - 在node js中发送没有状态的json响应

linux - 如何构建可靠的工具链

Java在Linux上使用su切换用户

java - ScoreDoc.score的公式。在卢塞恩

JSON 字段从 postgres 导入到 elasticsearch

c# - 查询Json如何获取must数组内的元素

c++ - 如何用触摸数据模拟鼠标点击?

Eclipse - 如何在查找/替换对话框中禁用 "direction"