설치
Bash
sudo apt install -y jq # Ubuntu / Debian
sudo yum install -y jq # CentOS / RHEL
brew install jq # macOS
jq --version기본 사용법
Bash
# . : 입력을 그대로 예쁘게 출력
echo '{"name":"Alice","age":30}' | jq '.'
# 파일에서 읽기
jq '.' data.json
# 특정 필드 추출
echo '{"name":"Alice","age":30}' | jq '.name'
# "Alice"
# 문자열만 (따옴표 없이)
jq -r '.name' data.json배열 처리
Bash
# 배열 전체 순회
echo '[{"id":1,"name":"Alice"},{"id":2,"name":"Bob"}]' | jq '.[]'
# 특정 인덱스
jq '.[0]' array.json
jq '.[-1]' array.json # 마지막
# 특정 필드만 추출
jq '.[].name' array.json
# 배열 길이
jq 'length' array.json
# 슬라이스
jq '.[2:5]' array.json필터링 — select
Bash
# 조건에 맞는 항목만
jq '.[] | select(.age > 25)' users.json
# 여러 조건
jq '.[] | select(.age > 20 and .active == true)' users.json
# 특정 값 포함
jq '.[] | select(.role == "admin")' users.json
# null 제거
jq '.[] | select(.email != null)' users.json변환 — map · to_entries · from_entries
Bash
# map으로 전체 변환
jq 'map(.age += 1)' users.json
# 필드 선택해서 새 오브젝트 생성
jq '.[] | {id, name, email: .contact.email}' users.json
# 키-값 쌍으로 변환
echo '{"a":1,"b":2}' | jq 'to_entries'
# [{"key":"a","value":1},{"key":"b","value":2}]
# 키 이름 변경
jq '[.[] | {userId: .id, userName: .name}]' users.json실전 패턴
Bash
# curl API 응답 파싱
curl -s https://api.github.com/repos/nodejs/node/releases | jq -r '.[0] | "버전: (.tag_name) 날짜: (.published_at)"'
# AWS CLI JSON 파싱
aws ec2 describe-instances | jq -r '.Reservations[].Instances[] | "(.InstanceId) (.State.Name) (.PublicIpAddress // "N/A")"'
# Docker inspect
docker inspect mycontainer | jq '.[0].NetworkSettings.IPAddress'
# JSON → CSV 변환
jq -r '.[] | [.id, .name, .email] | @csv' users.json
# 여러 JSON 파일 병합
jq -s '.[0] * .[1]' base.json override.json
# 빈 값 기본값 처리
jq '.users[] | .nickname // "anonymous"' data.json
# 숫자 포매팅
jq '.[] | .price | tostring + "원"' products.json
# 특정 키가 있는 항목만
jq '.[] | select(has("email"))' users.json
# 중첩 필드 안전하게 접근 (없으면 null)
jq '.user?.address?.city // "unknown"' data.json변수와 조건
Bash
# 변수 정의
jq --arg name "Alice" '.[] | select(.name == $name)' users.json
# 숫자 변수
jq --argjson min 25 '.[] | select(.age >= $min)' users.json
# if-then-else
jq '.[] | if .age >= 18 then .name + " (성인)" else .name + " (미성년)" end' users.json편집 안내 · Editorial Note
이 가이드는 AI 도구를 활용해 초안을 구성하고 사람이 명령어·문맥을 검토해 발행했습니다. 운영체제와 도구 버전에 따라 결과가 달라질 수 있으므로 적용 전 공식 문서를 함께 확인하세요. 오류를 발견하시면 이메일로 제보해 주세요.
관련 공식 문서GNU/Linux man 페이지 ↗
질문 & 답변 (Q&A)
이 가이드에 대해 궁금한 점을 질문해보세요. 확인 후 답변드립니다.