如何根据时间戳过滤json? UNIX

时间:2017-02-27 11:02:00

标签: json unix awk

我正在与一个返回我这些jsons的API进行交互(实际上有更多属性):

 {"timestamp": {"$date": 1488192218325}, "_id":103482}
 {"timestamp": {"$date": 1488192216265}, "_id":302719}
 {"timestamp": {"$date": 1588192216260}, "_id":302719}

我希望根据时间戳过滤这些json。我只想要两个日期之间的json(1488192216263和1488192216269)。我的预期输出是:

 {"timestamp": {"$date": 1488192216265}, "_id":302719}

我该怎么办?我可以使用grep或awk吗?

提前致谢。

3 个答案:

答案 0 :(得分:2)

awksedgrep是处理文字的绝佳工具。但他们不擅长使用json。使用jq处理json文档:

jq -s --argjson low "1488192216263" --argjson up "1488192216269" \
    '.[]|select(.timestamp["$date"]>=$low and .timestamp["$date"]<=$up)' file.json

答案 1 :(得分:0)

以下awk会告诉你:

awk -F '[^0-9]+' '{ if ($2 >= 1488192216263 && $2 <= 1488192216269) print $0 }' jsonfile.json

答案 2 :(得分:0)

试试这个 -

gawk -F'[{} ]' '($6 > 1488192216263 && $6 < 1488192216269)' timestamp