Используя jq, я ищу в большом файле json, в котором есть объекты, которые содержат несколько значений года в атрибуте.Я хочу иметь возможность сузить свой поиск и получать только те объекты, которые больше или меньше (старше или моложе), чем ГОД (пример 2015 г.).Это сложно, потому что атрибуты могут иметь несколько значений года, некоторые больше и меньше года, который я ищу.
Вот пример кода, который я ищу.Это все в основном это.
cat stackover.json
{
"tokens": [
{
"Name": "stack overflow",
"year": [
"1997",
"1998",
"1997"
]
},
{
"Name": "Return pizza",
"year": [
"1998",
"2015",
"2014",
"1998"
]
}
]
}
Я знаю, как искать a, содержит одно из значений ... но могу понять, как искать все значения и определять, все ли они меньше 2000.
Если я ищу меньше «<», я не получаю обратно обратно.Если я ищу больше «>», то я получаю оба объекта несколько раз
cat stackover.json | jq '.tokens[] | select(.year[] > 2000)'
{
"Name": "stack overflow",
"year": [
"1997",
"1998",
"1997"
]
}
{
"Name": "stack overflow",
"year": [
"1997",
"1998",
"1997"
]
}
{
"Name": "stack overflow",
"year": [
"1997",
"1998",
"1997"
]
}
{
"Name": "Return pizza",
"year": [
"1998",
"2015",
"2014",
"1998"
]
}
{
"Name": "Return pizza",
"year": [
"1998",
"2015",
"2014",
"1998"
]
}
{
"Name": "Return pizza",
"year": [
"1998",
"2015",
"2014",
"1998"
]
}
{
"Name": "Return pizza",
"year": [
"1998",
"2015",
"2014",
"1998"
]
}
То, что я пытаюсь выполнить.
Если я ищу что-то меньшее, чем 2000, я хочу запрос, который будет возвращать только «переполнение стека», так как он не имеет значения 20XX в доступных значениях.
cat stackover.json | code searching for only objects(stack overflow) where all values are less than 2000.
{
"Name": "stack overflow",
"year": [
"1997",
"1998",
"1997"
]
}