jq合并json数组元素



我的数据在以下json数组中:

[{ "min": 1, "max": 2},
{ "min": 5, "max": 6}]

我需要它的格式:

1-2,5-6

我尝试了以下过滤器:

.[] | [ .min, .max|tostring ] | join("-")

最后我得了:

"1-2"
"5-6"

我不知道如何从这个表达到想要的"1-2"、"5-6"。我是jq的新手,如果有任何提示,我将不胜感激。

jq -r 'map([.min, .max|tostring] | join("-")) | join(",")' input.json
1-2,5-6

如果您有一个足够新的jq版本,您可以放弃对tostring的调用。

如果最小/最大元素总是按这个顺序排列,并且没有其他键,您可能需要考虑:

map([.[]] | join("-")) | join(",")

还可以将字符串插值与join:结合使用

jq -r 'map("(.min)-(.max)") | join(",")' file.json

感谢匹克的想法。

最新更新