我正在与一个返回我这些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吗?
提前致谢。
答案 0 :(得分:2)
awk
,sed
或grep
是处理文字的绝佳工具。但他们不擅长使用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