Это продолжение ошибки jq: «Невозможно проиндексировать строку со строкой »
Ранее я мог фильтровать записи в файле json, который имеетцелевые объекты с помощью следующей команды и фильтра:
[{
"input": {
"obj1": {
"$link": "randomtext1"
},
"id": "a"
}
}]
jq -r '.[] | select( any(.input[]; type=="object" and has("$link") and (.["$link"]=="randomtext1")))|.id'
даст "a"
Как мне отфильтровать, если теперь ключ "$ link" и его значение "randomtext1"принадлежать массиву?
[{
"input": {
"obj1": [{
"$link": "randomtext1"
}],
"id": "a"
}
}]
(я все еще хочу иметь возможность найти "a" в качестве результата)
Пример .json:
[
{
"input": {
"obj1": [{
"$link": "randomtext1"
}],
"obj2": [{
"$link": "randomtext2"
}],
"someotherobj": "123"
},
"id": "a"
},
{
"input": {
"obj3": {
"$link": "randomtext1"
},
"obj4": {
"$link": "randomtext2"
}
},
"id": "b"
}
]
IЯ надеюсь найти и a и b с ключевым словом randomtext1, но получил b с тем же фильтром из предыдущего случая после того, как obj1 и obj2 были «экранированы / замаскированы» скобками массива в примере файла json.