【发布时间】:2019-04-10 21:31:03
【问题描述】:
我在 bash 变量中有一个 json 字符串,它是这样的:
{
"items": [
{
"foo": null,
"timestamp": 1553703000,
"bar": 123
},
{
"foo": null,
"timestamp": 1553703200,
"bar": 456
},
{
"foo": null,
"timestamp": 1553703400,
"bar": 789
}
]
}
我想知道有多少timestamps 在给定的日期时间之后,所以如果我有1553703100,它将返回2。
(如果你能得到我这个数字,就可以获得额外的虚数!)
作为实现这一目标的一步,我只想在字符串中获取 "timestamp": \d+, 的匹配项,以便我可以在 bash 脚本中循环它们。
我使用了一些 sed 和 grep,但从未使用过 awk,从我的阅读来看,这似乎更适合这项任务。
其他信息: - 如上所述,json 已经打印得很漂亮,所以时间戳总是在不同的行上。 - 这是在 Cygwin 中运行的,所以我有 awk/gawk、sed 和 grep/egrep,但可能没有其他人。 - 可以是 json 中任意数量的时间戳。
【问题讨论】:
-
使用'jq'解析JSON
-
@GillesQuenot,OP 指定了可用的工具
-
jq在 cygwin 上可用。 -
我不知道如何使用
jq,因为每个人都忙着告诉我使用它,以至于他们忘记了用它发布实际的解决方案。 -
谢谢大家!两个答案都很棒。原来我没有安装
jq,所以我将使用 awk 解决方案。希望我可以将 2 个答案标记为已接受:-(