관리 메뉴

피터의 개발이야기

[shell] JSON 깔끔히 볼 수 있는 jq 명령어 본문

Linux/Shell Script

[shell] JSON 깔끔히 볼 수 있는 jq 명령어

기록하는 백앤드개발자 2022. 9. 16. 21:43
반응형

 

ㅁ 개요

 ㅇ linux 서버에서 JSON 데이터를 볼 때가 많이 있다. 직렬화된 json을 보기는 쉽지 않다.

 ㅇ 이를 해결하기 위한 방법으로 jq명령어를 사용하면 JSON을 이쁘게 볼 수 있다.

 

ㅁ 설치

 ㅇ 맥의 경우 

brew install jq

 

ㅁ 사용법

 ㅇ JSON string  파이프라인으로 재처리 하면 이쁜 JSON을 볼 수 있다.

$ echo '{"foo": "bar"}' | jq                                                                          ✔  5238  23:20:52
{
  "foo": "bar"
}
$ echo '{"foo": "bar"}' | jq '.foo'                                                                   ✔  5239  23:20:59
"bar"

 

 

ㅁ 실사용 예제

[ec2-user@PRD-PETERICA-BASTION ilovefran]$ cat mongoFind.sh
#!/bin/sh
kubectl exec -it mongodb -- mongo peter --host mongodb --authenticationDatabase admin -u peter -p erica --eval 'db.PETER_INFO_'$1'.find({"key":"'$2'"})' | grep key | awk '{print "{",substr($0, index($0, "key")-1,10000)}' | jq

ㅇ 시스템에서 요청의 히스토리 파악을 위해 요청 정보에 대해서 history를 mongoDB에 남기고 있다.

ㅇ 자주보는 데이터가 아닌 관계로 MongoDB를 pod로 생성하여 AWS 볼륨을 마운트하여 사용하고 있다.

 

 

[ec2-user@PRD-PETERICA-BASTION ilovefran]$ sh mongoFind.sh 2022051110 PetericaTEst
{
	"key": "PetericaTEst",
	"id": "PT1408125",
	"ymd": "20220511",
	"reg_dt": "20220511105421",
	"body": {
		"description": "설명입니다."
	},
	"copyAllowed": true,
	"_class": "kr.co.peterica.gw.model.db.PetericaInfo"
}

ㅇ 고객문의 시 확인 차원에서 가끔 요청 데이터를 확인할 때에 key만 입력하면

     이쁘게 정제된 JSON데이터로 요청 정보를 확인 할 수 있다.

 

 

ㅁ 특정 JSON Object에서 데이터 필터하기

# 샘플 JSON
$ echo '{ "msgkey":"test", "text":"hello"}'
{ "msgkey":"test", "text":"hello"}

# jq
$ echo '{ "msgkey":"test", "text":"hello"}' | jq
{
  "msgkey": "test",
  "text": "hello"
}

# 데이터 필터
$ echo '{ "msgkey":"test", "text":"hello"}' | jq -c '[.msgkey, .text]'
["test","hello"]

 

ㅁ 배열 조회

# docker network에 연결된 컨테이너 배열 확인
docker network inspect my-net | jq '.[0].Containers'

 

ㅁ 함께보면 좋은 사이트

www.44bits.io/ko/post/cli_json_processor_jq_basic_syntax

 

커맨드라인 JSON 프로세서 jq : 기초 문법과 작동원리

jq는 커맨드 라인 JSON 프로세서입니다. JSON 데이터를 입력받아 데이터를 필터링하거나 변형합니다. jq의 기본적인 문법과 작동 원리를 소개합니다.

www.44bits.io

 

반응형
Comments