Я использую JQ для фильтрации списка вещей, а затем для каждой найденной вещи - переформатирую ее в одну строку, извлекая значения из подключей.
Проблема в том, что это одна изсубключи отсутствуют, вся строка опущена.
Рассмотрим следующий пример документа:
{
"items": [
{
"id": "A",
"active": true,
"tags": [
{ "name": "foo", "value": 1 }
]
},
{
"id": "B",
"active": true,
"tags": [
{ "name": "foo", "value":1 },
{"name": "bar", "value":2}
]
},
{
"id": "C",
"active": false,
"tags": [
{ "name": "foo", "value":1 },
{ "name": "baz", "value":3 }
]
}
]
}
Теперь я хочу выбрать все активные элементы и создать для каждой отдельной строки, описывающейидентификатор элемента, а также значение его тегов foo
и bar
.
Изначально я сделал что-то вроде этого:
jq -r '
.items[] |
select ( .active == true ) |
( .id + " -> [" +
( .tags[] | select( .name == "foo" ) | .value | tostring ) +
", " +
( .tags[] | select( .name == "bar" ) | .value | tostring ) +
"]"
)
'
Но поскольку bar
включается только в элемент B
, строка для элемента A
отфильтровывается.
Есть ли способ сделать дополнительный выбор необязательным, чтобы в случае неудачного выбора я получал пустую строку или что-то в этом роде?как это?