C.W.K.
Stream
Lesson 05 of 08 · published

jq, yq, dasel — 구조화 데이터

~10 min · jq, yq, dasel, json, yaml

Level 0창 구경꾼
0 XP0/95 lessons0/14 achievements
0/100 XP to next level100 XP to go0% complete

도구 셋, 모양 하나

셋 다 작은 표현식 언어로 구조화 데이터 쿼리 / 변환 가능:

  • jq — JSON. 원조, 가장 널리 배포.
  • yq — YAML, jq 호환 문법. Mike Farah 의 go-yq (옛 python-yq 와 다름).
  • dasel — JSON / YAML / TOML / XML / CSV 다 한 도구로, jq 풍 문법 하나. 최신, 가장 넓은 포맷 지원.

jq — 이미 다룸

textproc.lesson7 참조. jq 필터 언어가 lingua franca — 아래 다른 도구들이 다 이걸 베끼거나 개선.

yq — YAML 도 같은 방식

brew install yq
yq '.metadata.name' deployment.yaml
yq '.spec.replicas = 5' -i deployment.yaml   # in-place
yq -o=json '.' config.yaml | jq    # JSON 변환

dasel — universal

brew install dasel
dasel -f config.yaml '.database.host'
dasel -f Cargo.toml '.package.version'
dasel -f data.csv '.[0].name'
dasel -f doc.xml '.root.item.name'

일상에서 만나는 모든 구조화 파일 포맷을 한 도구로 쿼리.

어느 쪽?

  • JSON 만 → jq (가장 보편, 문서 많음).
  • 주로 YAML → yq (jq 문법 그대로 + in-place edit).
  • 한 스크립트에 포맷 섞임 → dasel.

Code

포맷 섞인 파이프라인·bash
# Read a YAML field, transform via jq
yq -o=json '.deployments[]' k8s.yaml \
  | jq '{name: .metadata.name, replicas: .spec.replicas}'
# Patch a TOML file in place
dasel put -t string -f Cargo.toml -v '0.5.0' '.package.version'

External links

Exercise

yq + dasel 설치: brew install yq dasel. 본인 YAML config 에서 yq '.path' file 로 필드 쿼리. JSON 변환: yq -o=json '.' file | jq.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.