У меня есть файл json, который составляет> 20 ГБ данных, как показано ниже:
{
"_id": {
"$serialnumber": "572"
},
"content": "{\"001\":\"77\",\"401\":[[\" 0\",[\"a\",\"UK\"],[\"b\",\"Euy/ O\"],[\"c\",\"20160811\"],[\"g\",\"R2\"]],[\" 1\",[\"a\",\"UK\"],[\"b\",\"LO\"],[\"c\",\"20160811\"]]]}"
}
{
"_id": {
"$serialnumber": "573"
},
"content": "{\"001\":\"234\",\"424\":[[\" 0\",[\"a\",\"UK\"],[\"b\",\"Euy/ O\"],[\"c\",\"20160811\"],[\"g\",\"R2\"]],[\" 1\",[\"a\",\"UK\"],[\"b\",\"LO\"],[\"c\",\"20160811\"]]]}"
}
{
"_id": {
"$serialnumber": "574"
},
"content": "{\"001\":\"549\",\"432\":[[\" 0\",[\"a\",\"UK\"],[\"b\",\"Euy/ O\"],[\"c\",\"20160811\"],[\"g\",\"R2\"]],[\" 1\",[\"a\",\"UK\"],[\"b\",\"LO\"],[\"c\",\"20160811\"]]]}"
}
{
"_id": {
"$serialnumber": "575"
},
"content": "{\"001\":\"888\",\"532\":[[\" 0\",[\"a\",\"UK\"],[\"b\",\"Euy/ O\"],[\"c\",\"20160811\"],[\"g\",\"R2\"]],[\" 1\",[\"a\",\"UK\"],[\"b\",\"LO\"],[\"c\",\"20160811\"]]]}"
}
Мне нужен способ с потоком JQ (я установил версию 1.6), чтобы получить все значения 001, что иметь в содержимом элемент 4 .. (400, или 401, или 402, или 403, ...)
, например, приведенное выше вернет:
77
234
549
и не 888, который не содержит 4 .. элемента.
001 77 has the \"401\" element
001 234 has the \"424\" element
001 549 has the \"432\" element
ниже, пожалуйста, найдите одну из моих попыток решить эту проблему:
jq -cn --stream 'fromstream(1|truncate_stream(inputs | select(.[0][] == "_id") | del(.[0][0]))) | select(.content == "400")'