⚙️ jq и yq — два похожих инструмента для работы со структурированными данными прямо в терминале: jq для JSON, yq для YAML.
Оба решают одну и ту же боль — вытащить, отфильтровать или изменить нужное поле из структуры данных без написания скрипта.
🟢 jq — Принимает JSON на входе, применяет фильтр-выражение, отдаёт результат — тоже JSON (или текст).
Базовый синтаксис:
команда | jq 'фильтр'
Пример исходных данных (response.json):
{
"status": "ok",
"pods": [
{"name": "nginx-1", "ready": true, "restarts": 0},
{"name": "nginx-2", "ready": false, "restarts": 5}
]
}
Достать конкретное поле:
cat response.json | jq '.status'
"ok:"
Пройтись по массиву и вытащить имена:
cat response.json | jq '.pods[].name'
"nginx-1"
"nginx-2"
Фильтрация по условию:
cat response.json | jq '.pods[] | select(.ready == false)'
{
"name": "nginx-2",
"ready": false,
"restarts": 5
}
🟢 yq — по духу — тот же jq, только для YAML синтаксис фильтров почти идентичен jq.
Пример файла (deployment.yaml):
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx
spec:
replicas: 3
template:
spec:
containers:
- name: nginx
image: nginx:1.25
Достать значение:
yq '.spec.replicas' deployment.yaml
3
Сменить образ контейнера:
yq -i '.spec.template.spec.containers[0].image = "nginx:1.27"' deployment.yaml
🟢 jq и yq — база для любого, кто работает с API, Kubernetes или CI/CD: они превращают ручной разбор JSON/YAML в одну команду, которую легко засунуть в скрипт.
#линуксятина
Оба решают одну и ту же боль — вытащить, отфильтровать или изменить нужное поле из структуры данных без написания скрипта.
🟢 jq — Принимает JSON на входе, применяет фильтр-выражение, отдаёт результат — тоже JSON (или текст).
Базовый синтаксис:
команда | jq 'фильтр'
Пример исходных данных (response.json):
{
"status": "ok",
"pods": [
{"name": "nginx-1", "ready": true, "restarts": 0},
{"name": "nginx-2", "ready": false, "restarts": 5}
]
}
Достать конкретное поле:
cat response.json | jq '.status'
"ok:"
Пройтись по массиву и вытащить имена:
cat response.json | jq '.pods[].name'
"nginx-1"
"nginx-2"
Фильтрация по условию:
cat response.json | jq '.pods[] | select(.ready == false)'
{
"name": "nginx-2",
"ready": false,
"restarts": 5
}
🟢 yq — по духу — тот же jq, только для YAML синтаксис фильтров почти идентичен jq.
Пример файла (deployment.yaml):
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx
spec:
replicas: 3
template:
spec:
containers:
- name: nginx
image: nginx:1.25
Достать значение:
yq '.spec.replicas' deployment.yaml
3
Сменить образ контейнера:
yq -i '.spec.template.spec.containers[0].image = "nginx:1.27"' deployment.yaml
🟢 jq и yq — база для любого, кто работает с API, Kubernetes или CI/CD: они превращают ручной разбор JSON/YAML в одну команду, которую легко засунуть в скрипт.
#линуксятина