Я пытаюсь преобразовать этот запрос:
cat input_file.json | jq '.arrlstProperty[] | select(.code == "123" or .code=="345" or .code="678")' > output.json
В это:
cat input_file.json | jq '.arrlstProperty[] | select($codes[0])' --slurpfile codes args.json > sal.json
-- args.json:
[".code==\"123\" or .code==\"234\""]
Но это не работает, фильтр выбора не применяется. Я знаю, потому что просто возвращает все элементы в массиве arrlstProperty.
Причина, по которой я так поступаю, заключается в том, что мне нужно отправить слишком много кодов (более 50 КБ) в select.
Это ошибка, если попытаться отправить более 2К кодов:
jq: error: function compiled to 77856 bytes which is too long
Упрощенная структура моего json файла:
{
"user": {
"id": 100,
"action": "UPDATE",
"years_experience": 0
},
"arrlstProperty": [
{
"id": 12345,
"code": "EB-123",
"galleries": [
{
"action": "UPDATE",
"id": 90,
"alt": "Foto de nave industrial en renta en , antigua santa rosa, apodaca, nuevo león, 11448639 No. 01"
},
{
"action": "UPDATE",
"id": 91,
"alt": "Foto de nave industrial en renta en , antigua santa rosa, apodaca, nuevo león, 11448639 No. 02"
}
]
},
{
"id": 12346,
"code": "EB-234",
"galleries": [
{
"action": "UPDATE",
"id": 92,
"alt": "Foto de nave industrial en renta en , antigua santa rosa, apodaca, nuevo león, 11448639 No. 01"
},
{
"action": "UPDATE",
"id": 93,
"alt": "Foto de nave industrial en renta en , antigua santa rosa, apodaca, nuevo león, 11448639 No. 02"
}
]
}
}