jq объединить элементы массива json - PullRequest
0 голосов
/ 10 декабря 2018

У меня есть данные в следующем массиве 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 ]

0 голосов
/ 10 декабря 2018
jq -r 'map([.min, .max|tostring] | join("-")) | join(",")' input.json
1-2,5-6

Если у вас достаточно свежая версия jq, вы можете сбросить вызов до tostring.

Если элементы min / max всегда в этом порядке и если нет других клавишВы могли бы рассмотреть:

map([.[]] | join("-")) | join(",")
0 голосов
/ 10 декабря 2018

Также можно использовать строковую интерполяцию в сочетании с join:

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

Благодаря пику за идею.

...