jq / yq チート集
JSON/YAML を CLI で扱う jq と mikefarah 版 yq の基本、配列・オブジェクト操作、select/map/reduce、AWS CLI や kubectl 出力抽出、Helm values 編集をまとめたチート集。
- 更新日
- 2026-05-29
- 参照範囲
- 公式ドキュメント / man page / 主要ベンダーCLI
- 対象実装
- 主要 Linux / BSD / ネットワーク機器 CLI の一般的な実装
- 免責
- OS とバージョン差分は実環境で確認してください。
このチートシートの使いどころ
jq / yq チートシートは、JSON と YAML を CLI で抽出、変換、整形、集計するための実例集です。対象は jq と mikefarah 版 yq の一般的な現行バージョンです。kubectl、AWS CLI、Helm values、ログの JSON 出力を読みやすくし、必要なキーだけを安全に取り出す場面で使います。
34 / 34
jq .jq / yq で jq . を実務運用で使う
$ jq . response.jsonjq .keyjq / yq で jq .key を実務運用で使う
$ jq .name user.jsonjq -rjq / yq で jq -r を実務運用で使う
$ jq -r .status response.jsonjq .[]jq / yq で jq .[] を実務運用で使う
$ jq ".items[]" list.jsonjq .[0]jq / yq で jq .[0] を実務運用で使う
$ jq ".[0]" array.jsonjq lengthjq / yq で jq length を実務運用で使う
$ jq ".items | length" response.jsonjq selectjq / yq で jq select を実務運用で使う
$ jq ".items[] | select(.status == "Running")" pods.jsonjq mapjq / yq で jq map を実務運用で使う
$ jq ".items | map(.metadata.name)" pods.jsonjq to_entriesjq / yq で jq to_entries を実務運用で使う
$ jq "to_entries[] | [.key,.value]" tags.jsonjq group_byjq / yq で jq group_by を実務運用で使う
$ jq "group_by(.status) | map({status: .[0].status, count: length})" list.jsonjq reducejq / yq で jq reduce を実務運用で使う
$ jq "reduce .items[] as $i (0; . + $i.size)" data.jsonjq --argjq / yq で jq --arg を実務運用で使う
$ jq --arg ns default ".items[] | select(.metadata.namespace == $ns)" pods.jsonjq --slurpjq / yq で jq --slurp を実務運用で使う
$ jq --slurp "add" part-*.jsonjq keysjq / yq で jq keys を実務運用で使う
$ jq "keys" object.jsonjq sort_byjq / yq で jq sort_by を実務運用で使う
$ jq ".items | sort_by(.metadata.creationTimestamp)" pods.jsonAWS extract instance IPjq / yq で AWS extract instance IP を実務運用で使う
$ aws ec2 describe-instances | jq -r ".Reservations[].Instances[].PrivateIpAddress"AWS filter runningjq / yq で AWS filter running を実務運用で使う
$ aws ec2 describe-instances | jq -r ".Reservations[].Instances[] | select(.State.Name=="running") | .InstanceId"kubectl pod namesjq / yq で kubectl pod names を実務運用で使う
$ kubectl get pods -A -o json | jq -r ".items[].metadata.name"kubectl image listjq / yq で kubectl image list を実務運用で使う
$ kubectl get pods -A -o json | jq -r ".items[].spec.containers[].image" | sort -uCloudTrail event namesjq / yq で CloudTrail event names を実務運用で使う
$ jq -r ".Records[].eventName" cloudtrail.json | sort | uniq -cyq .jq / yq で yq . を実務運用で使う
$ yq . values.yamlyq -rjq / yq で yq -r を実務運用で使う
$ yq -r .image.repository values.yamlyq eval alljq / yq で yq eval all を実務運用で使う
$ yq ea ". as $item ireduce ({}; . * $item)" base.yaml override.yamlyq array imagesjq / yq で yq array images を実務運用で使う
$ yq ".spec.containers[].image" deploy.yamlyq -Njq / yq で yq -N を実務運用で使う
$ yq -N ".metadata.name" multi-doc.yamlyq -ijq / yq で yq -i を実務運用で使う
$ yq -i ".replicaCount = 3" values.yamlyq envjq / yq で yq env を実務運用で使う
$ IMAGE=nginx:1.27 yq -i ".image = strenv(IMAGE)" values.yamlyq select docjq / yq で yq select doc を実務運用で使う
$ yq ". | select(.kind == "Deployment")" all.yamlHelm value setjq / yq で Helm value set を実務運用で使う
$ yq -i ".controller.replicaCount = 2" values.yamlKustomize patch imagejq / yq で Kustomize patch image を実務運用で使う
$ yq -n ".apiVersion="apps/v1" | .kind="Deployment" | .metadata.name="web""List services portsjq / yq で List services ports を実務運用で使う
$ yq ".spec.ports[].port" service.yamlChange container imagejq / yq で Change container image を実務運用で使う
$ yq -i "(.spec.template.spec.containers[] | select(.name == "app") | .image) = "nginx:1.27"" deploy.yamlDelete yaml keyjq / yq で Delete yaml key を実務運用で使う
$ yq -i "del(.metadata.annotations)" deploy.yamlMerge YAMLjq / yq で Merge YAML を実務運用で使う
$ yq eval-all "select(fileIndex == 0) * select(fileIndex == 1)" base.yaml patch.yaml| Command | Description | Example | Copy |
|---|---|---|---|
jq . | jq / yq で jq . を実務運用で使う | $ jq . response.json | |
jq .key | jq / yq で jq .key を実務運用で使う | $ jq .name user.json | |
jq -r | jq / yq で jq -r を実務運用で使う | $ jq -r .status response.json | |
jq .[] | jq / yq で jq .[] を実務運用で使う | $ jq ".items[]" list.json | |
jq .[0] | jq / yq で jq .[0] を実務運用で使う | $ jq ".[0]" array.json | |
jq length | jq / yq で jq length を実務運用で使う | $ jq ".items | length" response.json | |
jq select | jq / yq で jq select を実務運用で使う | $ jq ".items[] | select(.status == "Running")" pods.json | |
jq map | jq / yq で jq map を実務運用で使う | $ jq ".items | map(.metadata.name)" pods.json | |
jq to_entries | jq / yq で jq to_entries を実務運用で使う | $ jq "to_entries[] | [.key,.value]" tags.json | |
jq group_by | jq / yq で jq group_by を実務運用で使う | $ jq "group_by(.status) | map({status: .[0].status, count: length})" list.json | |
jq reduce | jq / yq で jq reduce を実務運用で使う | $ jq "reduce .items[] as $i (0; . + $i.size)" data.json | |
jq --arg | jq / yq で jq --arg を実務運用で使う | $ jq --arg ns default ".items[] | select(.metadata.namespace == $ns)" pods.json | |
jq --slurp | jq / yq で jq --slurp を実務運用で使う | $ jq --slurp "add" part-*.json | |
jq keys | jq / yq で jq keys を実務運用で使う | $ jq "keys" object.json | |
jq sort_by | jq / yq で jq sort_by を実務運用で使う | $ jq ".items | sort_by(.metadata.creationTimestamp)" pods.json | |
AWS extract instance IP | jq / yq で AWS extract instance IP を実務運用で使う | $ aws ec2 describe-instances | jq -r ".Reservations[].Instances[].PrivateIpAddress" | |
AWS filter running | jq / yq で AWS filter running を実務運用で使う | $ aws ec2 describe-instances | jq -r ".Reservations[].Instances[] | select(.State.Name=="running") | .InstanceId" | |
kubectl pod names | jq / yq で kubectl pod names を実務運用で使う | $ kubectl get pods -A -o json | jq -r ".items[].metadata.name" | |
kubectl image list | jq / yq で kubectl image list を実務運用で使う | $ kubectl get pods -A -o json | jq -r ".items[].spec.containers[].image" | sort -u | |
CloudTrail event names | jq / yq で CloudTrail event names を実務運用で使う | $ jq -r ".Records[].eventName" cloudtrail.json | sort | uniq -c | |
yq . | jq / yq で yq . を実務運用で使う | $ yq . values.yaml | |
yq -r | jq / yq で yq -r を実務運用で使う | $ yq -r .image.repository values.yaml | |
yq eval all | jq / yq で yq eval all を実務運用で使う | $ yq ea ". as $item ireduce ({}; . * $item)" base.yaml override.yaml | |
yq array images | jq / yq で yq array images を実務運用で使う | $ yq ".spec.containers[].image" deploy.yaml | |
yq -N | jq / yq で yq -N を実務運用で使う | $ yq -N ".metadata.name" multi-doc.yaml | |
yq -i | jq / yq で yq -i を実務運用で使う | $ yq -i ".replicaCount = 3" values.yaml | |
yq env | jq / yq で yq env を実務運用で使う | $ IMAGE=nginx:1.27 yq -i ".image = strenv(IMAGE)" values.yaml | |
yq select doc | jq / yq で yq select doc を実務運用で使う | $ yq ". | select(.kind == "Deployment")" all.yaml | |
Helm value set | jq / yq で Helm value set を実務運用で使う | $ yq -i ".controller.replicaCount = 2" values.yaml | |
Kustomize patch image | jq / yq で Kustomize patch image を実務運用で使う | $ yq -n ".apiVersion="apps/v1" | .kind="Deployment" | .metadata.name="web"" | |
List services ports | jq / yq で List services ports を実務運用で使う | $ yq ".spec.ports[].port" service.yaml | |
Change container image | jq / yq で Change container image を実務運用で使う | $ yq -i "(.spec.template.spec.containers[] | select(.name == "app") | .image) = "nginx:1.27"" deploy.yaml | |
Delete yaml key | jq / yq で Delete yaml key を実務運用で使う | $ yq -i "del(.metadata.annotations)" deploy.yaml | |
Merge YAML | jq / yq で Merge YAML を実務運用で使う | $ yq eval-all "select(fileIndex == 0) * select(fileIndex == 1)" base.yaml patch.yaml |