jq命令根据值>过滤键。一个号码?

时间:2016-03-10 20:11:39

标签: json key jq

我有一个简单的JSON blob,如下所示:

{
  "thing_one": 223,
  "thing_two": 0,
  "thing_three": 0,
  "thing_four": 69,
  "thing_five": 14,
  "thing_six": 0
}

我想选择值为>的键。 10.我希望我的jq命令的输出返回一个列表,其中只包含符合此条件的键。在上面的示例中,它将返回"thing_one, thing_four, thing_five"。这样做的最佳方式是什么?

3 个答案:

答案 0 :(得分:0)

类似的东西:

csrftoken

答案 1 :(得分:0)

to_entries[] | select( .value>10 ) | .key

生成密钥流:

"thing_one"
"thing_four"
"thing_five"

使用-r命令行选项删除引号。

要拓宽视野,请考虑以下方案:

keys[] as $key
| if .[$key] > 10 then $key else empty end

使用foreach

foreach keys[] as $key (.; .; if .[$key] > 10 then $key else empty end)

至于最好的,我认为你会发现上面的第二个选择是jq中表现最佳的可能性最简洁。

答案 2 :(得分:0)

以下是使用 delpaths 路径删除值< = 10

的解决方案
delpaths([paths(. <= 10)])