с учетом следующего json, как следует изменить приведенный ниже код, чтобы добавить новое условие.
возвращает все идентификаторы, которые имеют элемент, который начинается с 4, но также имеют массив в нем есть либо значение
\ "v \", либо значение \ "9 \".
Вход json:
{
"memo": {
"notice": "delivered on 17"
},
"message": "{\"id\":\"1\",\"401\":[[\" 0\",[\"a\",\"UK\"],[\"b\",\"Euy/ O\"],[\"c\",\"20160811\"],[\"g\",\"R2\"]],[\" 1\",[\"a\",\"UK\"],[\"b\",\"LO\"],[\"c\",\"20160811\"]]]}"
}
{
"memo": {
"notice": "delivered on 190"
},
"message": "{\"id\":\"2\",\"424\":[[\" 0\",[\"v\",\"UK\"],[\"9\",\"Euy/ O\"],[\"c\",\"20160811\"],[\"g\",\"R2\"]],[\" 1\",[\"a\",\"UK\"],[\"b\",\"LO\"],[\"c\",\"20160811\"]]]}"
}
{
"memo": {
"notice": "delivered on 734"
},
"message": "{\"id\":\"3\",\"432\":[[\" 0\",[\"a\",\"UK\"],[\"9\",\"Euy/ O\"],[\"c\",\"20160811\"],[\"v\",\"R2\"]],[\" 1\",[\"a\",\"UK\"],[\"b\",\"LO\"],[\"c\",\"20160811\"]]]}"
}
{
"memo": {
"notice": "delivered on 1092"
},
"message": "{\"id\":\"888\",\"532\":[[\" 0\",[\"v\",\"UK\"],[\"b\",\"Euy/ O\"],[\"c\",\"20160811\"],[\"g\",\"R2\"]],[\" 1\",[\"a\",\"UK\"],[\"b\",\"LO\"],[\"c\",\"20160811\"]]]}"
}
snippet that needs to be adjusted:
< input.json jq -r '.content
| fromjson
| select( any(keys_unsorted[]; test("^4")) )
| .["id"]'
Требуемый выход :
2
3
jq версия: 1.6, уже безуспешно пытался использовать: 1. index 2. встроенный оператор IN
Нам нужны только значения 001 для каждого json объекта , который имеет элемент, начинающийся с 4, и этот элемент (скажем, 401) также имеет значение v, или 9 в своем вложенном массиве, или оба v и 9.