jq
17 commands
17 shown
Красивый вывод JSON
Форматировать и раскрасить JSON файл
cat data.json | jq '.'
Фильтр по полю
Выбрать объекты где поле равно значению
cat data.json | jq '.items[] | select(.status == "Running")'
Извлечь конкретные поля
Выбрать только нужные поля в новый массив
cat data.json | jq '[.items[] | {name:.metadata.name, ns:.metadata.namespace}]'
Группировка по полю
Агрегировать элементы по значению поля
cat data.json | jq 'group_by(.namespace) | map({ns: .[0].namespace, count: length})'
Удалить поле
Удалить поле из JSON вывода
cat data.json | jq 'del(.metadata.managedFields)'
Массив в строки
Raw вывод (-r) для скриптов; одно значение на строку
cat data.json | jq -r '.items[].metadata.name'
Объединить два JSON объекта
Глубокое слияние двух JSON файлов (override побеждает)
jq -s '.[0] * .[1]' base.json override.json
Выбрать непустые поля
Отфильтровать элементы массива где value не null
jq '[.[] | select(.value != null)]' data.json
Группировать по полю
Подсчитать записи сгруппированные по полю status
jq 'group_by(.status) | map({status: .[0].status, count: length})' data.json
Уплостить вложенный массив
Уплостить один уровень вложенных массивов
jq 'flatten(1)' nested.json
Массив в объект (by key)
Создать объект с ключами из поля id
jq 'INDEX(.[]; .id)' items.json
Слить два объекта
Глубокое слияние двух JSON объектов (правый приоритетнее)
jq -s '.[0] * .[1]' base.json override.json
Безопасно извлечь вложенное значение
Опциональные цепочки с запасным значением по умолчанию
jq '.config?.database?.host // "localhost"' config.json
Сортировать по числовому полю
Получить 5 последних событий отсортированных по timestamp
jq 'sort_by(.timestamp) | reverse | .[0:5]' events.json
JSON в CSV
Вывести выбранные поля в формате CSV
jq -r '.[] | [.id, .name, .status] | @csv' data.json
Добавить поле каждому элементу
Добавить новую пару ключ-значение в каждый элемент массива
jq '[.[] | . + {"env": "prod"}]' items.json
Обойти и преобразовать строки
Рекурсивно привести все строковые значения к нижнему регистру
jq 'walk(if type == "string" then ascii_downcase else . end)' data.json
no commands match