[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-rabota-v-cli-bash-kak-rabotat-s-json-v-komandnoy-stroke-s-pomoshchyu-jq":3},{"id":4,"slug":5,"topicId":6,"topicSlug":7,"topicName":8,"topicEmoji":9,"question":10,"answer":11,"codeLang":12,"codeSrc":12,"important":12,"commonMistakes":12,"modernUsage":12,"difficulty":13,"tags":14,"related":19,"progress":20,"seo":21},174,"kak-rabotat-s-json-v-komandnoy-stroke-s-pomoshchyu-jq",4,"rabota-v-cli-bash","Работа в CLI (Bash)","💻","Как работать с JSON в командной строке с помощью jq?","**`jq`** — специализированный инструмент командной строки для парсинга, фильтрации и трансформации JSON. Незаменим при работе с REST API, конфигурациями, логами в JSON-формате и выводом инструментов DevOps (Docker, Kubernetes, Terraform).\n\n### Базовое использование\n\n```bash\n# Красивый вывод (pretty print)\necho '{\"name\":\"John\",\"age\":30}' | jq .\n\n# Из файла\njq . config.json\n\n# Из curl\ncurl -s https:\u002F\u002Fapi.example.com\u002Fusers | jq .\n```\n\n### Извлечение полей\n\n```bash\necho '{\"name\":\"John\",\"age\":30}' | jq '.name'\n# \"John\"\n\n# Без кавычек (raw output)\necho '{\"name\":\"John\",\"age\":30}' | jq -r '.name'\n# John\n\n# Вложенные объекты\necho '{\"user\":{\"name\":\"John\",\"address\":{\"city\":\"Moscow\"}}}' | jq '.user.address.city'\n# \"Moscow\"\n```\n\n### Работа с массивами\n\n```bash\necho '[1,2,3,4,5]' | jq '.[0]'           # Первый элемент: 1\necho '[1,2,3,4,5]' | jq '.[-1]'          # Последний элемент: 5\necho '[1,2,3,4,5]' | jq '.[2:4]'         # Срез: [3,4]\necho '[1,2,3,4,5]' | jq '.[]'            # Все элементы по одному\necho '[1,2,3,4,5]' | jq 'length'         # Длина: 5\n\n# Извлечение поля из объектов массива\necho '[{\"name\":\"John\"},{\"name\":\"Jane\"}]' | jq '.[].name'\n# \"John\"\n# \"Jane\"\n\n# Результат в виде массива\necho '[{\"name\":\"John\"},{\"name\":\"Jane\"}]' | jq '[.[].name]'\n# [\"John\",\"Jane\"]\n```\n\n### Фильтрация с select\n\n```bash\n# select — фильтр по условию\necho '[{\"name\":\"John\",\"age\":30},{\"name\":\"Jane\",\"age\":25}]' | \\\n    jq '.[] | select(.age > 28)'\n# {\"name\":\"John\",\"age\":30}\n\n# Множественные условия\necho '[{\"name\":\"John\",\"active\":true},{\"name\":\"Jane\",\"active\":false}]' | \\\n    jq '.[] | select(.active == true) | .name'\n# \"John\"\n```\n\n### Трансформация\n\n```bash\n# Создание нового объекта\necho '{\"first\":\"John\",\"last\":\"Doe\",\"age\":30}' | \\\n    jq '{fullName: (.first + \" \" + .last), age}'\n# {\"fullName\":\"John Doe\",\"age\":30}\n\n# map — применить преобразование к каждому элементу\necho '[1,2,3,4,5]' | jq 'map(. * 2)'\n# [2,4,6,8,10]\n\n# Сортировка\necho '[{\"name\":\"Charlie\"},{\"name\":\"Alice\"},{\"name\":\"Bob\"}]' | jq 'sort_by(.name)'\n\n# Группировка\necho '[{\"type\":\"A\",\"val\":1},{\"type\":\"B\",\"val\":2},{\"type\":\"A\",\"val\":3}]' | \\\n    jq 'group_by(.type)'\n```\n\n### Практические примеры\n\n```bash\n# Парсинг ответа Spring Boot Actuator\ncurl -s http:\u002F\u002Flocalhost:8080\u002Factuator\u002Fhealth | jq '.status'\n\n# Извлечь все имена из ответа API\ncurl -s https:\u002F\u002Fapi.example.com\u002Fusers | jq -r '.[].name'\n\n# Парсинг docker inspect\ndocker inspect container_name | jq '.[0].NetworkSettings.IPAddress'\n\n# Парсинг Kubernetes — найти незапущенные поды\nkubectl get pods -o json | \\\n    jq -r '.items[] | select(.status.phase != \"Running\") | .metadata.name'\n\n# Преобразовать JSON в CSV\necho '[{\"name\":\"John\",\"age\":30},{\"name\":\"Jane\",\"age\":25}]' | \\\n    jq -r '.[] | [.name, .age] | @csv'\n# \"John\",30\n# \"Jane\",25\n\n# Подсчитать элементы по условию\ncurl -s https:\u002F\u002Fapi.example.com\u002Fissues | \\\n    jq '[.[] | select(.status == \"open\")] | length'\n```\n\n### Краткая шпаргалка по синтаксису jq\n\n| Выражение | Описание |\n|---|---|\n| `.` | Весь объект |\n| `.field` | Значение поля |\n| `.field1.field2` | Вложенное поле |\n| `.[N]` | Элемент массива по индексу |\n| `.[]` | Все элементы массива |\n| `\\| select(cond)` | Фильтрация по условию |\n| `map(expr)` | Преобразование каждого элемента |\n| `sort_by(.field)` | Сортировка |\n| `group_by(.field)` | Группировка |\n| `length` | Длина массива\u002Fстроки |\n| `keys` | Ключи объекта |\n| `-r` (флаг) | Raw output (без кавычек) |\n\n> **На собеседовании:** `jq` — инструмент Middle\u002FSenior уровня. Достаточно знать базовые операции: извлечение полей (`.field`), итерация по массивам (`.[]`), фильтрация (`select`). Покажите практику: «curl ... | jq '.status'» для проверки health endpoint — это повседневная задача.\n\n---","","middle",[15,16,17,18],"jq","linux","json","bash",[],null,{"title":22,"description":23,"ogTitle":22,"ogDescription":24,"keywords":25,"schemaAnswer":32,"featuredSnippetReady":33},"jq: обработка JSON в командной строке -- Gymterview","Как работать с JSON в командной строке с помощью jq? Извлечение полей, работа с массивами, фильтрация select, трансформация, map, sort_by. Примеры с curl, Docker, Kubernetes.","Полный разбор jq: извлечение полей, массивы, фильтрация, трансформация и практические примеры с curl, Docker и Kubernetes.",[15,26,27,28,29,30,31],"JSON командная строка","jq select","jq map","jq фильтрация","парсинг JSON","jq примеры","jq -- мощный инструмент для обработки JSON в CLI. Базовое использование: jq . для pretty print, jq '.field' для извлечения поля, jq -r для вывода без кавычек. Массивы: .[0] (элемент), .[] (итерация), length (размер), .[2:4] (срез). Фильтрация: select(.age > 28) выбирает по условию. Трансформация: создание новых объектов {fullName: (.first + \" \" + .last)}, map(. * 2) для преобразования массива, sort_by(.name) для сортировки. Преобразование в CSV: @csv. Практические примеры: парсинг Spring Boot Actuator, docker inspect, kubectl get pods.",true]