jq: выбрать вложенное поле JSON и отфильтровать массив
jq разбирает JSON-структуру, поэтому надёжнее grep для вложенных полей. Оператор [] перебирает массив, а select оставляет только элементы, которые соответствуют условию. ????? ??????????? ?????????? ???????? ?????? ??????? ? ????????? ?????? ? ??????? ?????.
Рабочий пример
printf '%s\\n' '{\"items\":[{\"id\":7,\"active\":true},{\"id\":8,\"active\":false}]}' | jq -r '.items[] | select(.active) | .id'Флаг -r печатает строки без JSON-кавычек. Для необязательного поля используйте оператор ? и default через //, например .name // "unknown".
Частый вопрос
Как вывести весь активный объект?
Уберите последний селектор .id и добавьте -c для компактного JSON: jq -c .items[] | select(.active).