도구 셋, 모양 하나
셋 다 작은 표현식 언어로 구조화 데이터 쿼리 / 변환 가능:
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.