使用jq合并json数组元素

3

我有一个以下 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的新手,希望能得到任何提示。

2个回答

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

如果您使用的是足够新的jq版本,可以省略对tostring的调用。

如果最小/最大元素始终按照那个顺序排列,并且没有其他键,则可以考虑:

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

感谢您的帮助,也感谢 @hek2mgl :) 现在它完美地工作了。 - ozimki

2
还可以使用字符串插值,结合join一起使用:
jq -r 'map("\(.min)-\(.max)") | join(",")' file.json

感谢 Peak提供的点子。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接