본문 바로가기

리눅스

jq 명령어

728x90

jq 명령어

jq는 커맨드 라인에서 JSON 데이터를 파싱하고 조작하는 유용한 도구입니다. 이 도구를 사용하면 JSON 형식의 데이터를 쉽게 쿼리하고 필요한 정보를 추출하거나 수정할 수 있습니다.

jq 설치

  • CentOS
yum install -y epel-release
yum install -y jq
  • Ubuntu
sudo apt update
sudo apt install jq
  • jq 버전
jq --version
$ jq --version
jq-1.6

jq 명령어의 사용 예제

1. JSON 데이터 파싱하기

jq를 사용하여 JSON 데이터를 파싱하고 보기 쉬운 형태로 출력할 수 있습니다.

echo '{"name": "John", "age": 30}' | jq .

이 명령어는 다음과 같이 JSON 데이터를 예쁘게 포맷하여 출력합니다.

{
  "name": "John",
  "age": 30
}

 

2. 필드 추출하기

jq를 사용하여 JSON 객체의 특정 필드를 추출할 수 있습니다.

echo '{"name": "Alice", "age": 25, "city": "New York"}' | jq '.name'

결과는 "Alice"가 됩니다.

 

3. 필터링과 맵핑

jq를 사용하여 배열을 필터링하고 매핑할 수 있습니다.

echo '[{"name": "Bob", "age": 35}, {"name": "Eve", "age": 29}, {"name": "Charlie", "age": 42}]' | jq '.[] | select(.age > 30) | .name'

이 명령어는 나이가 30보다 큰 사람들의 이름을 추출합니다. 결과는 다음과 같습니다.

"Bob"
"Charlie"
728x90

4. JSON 데이터 수정하기

jq를 사용하여 JSON 데이터를 수정할 수도 있습니다.

echo '{"name": "Mary", "age": 28}' | jq '.age = 29'

이 명령어는 age 필드의 값을 29로 수정합니다.

{
  "name": "Mary",
  "age": 29
}

 

5. JSON 데이터 생성하기

jq를 사용하여 새로운 JSON 데이터를 생성할 수 있습니다.

jq -n '{name: "David", age: 24}'

이 명령어는 새로운 JSON 객체를 생성합니다.

{
  "name": "David",
  "age": 24
}

 

jq는 다양한 기능과 옵션을 제공하므로 JSON 데이터를 처리하고 조작하는데 유용한 강력한 도구입니다. 필요한 경우 jq의 공식 문서나 온라인 자습서를 참고하여 더 많은 기능과 사용 방법을 학습할 수 있습니다.

 

jq를 사용하여 json을 한 줄로 변환하는 방법

file.txt 파일

$ cat file.txt
{"ID":"web","Service":"web","Tags":["django"],"Meta":{},"Port":80,"Address":"","Weights":{"Passing":1,"Warning":1},"EnableTagOverride":false,"ContentHash":"318c41a7ce882f20","Datacenter":"vm-dc1"}

cat file.txt | jq .

cat file.txt | jq .
{
  "ID": "web",
  "Service": "web",
  "Tags": [
    "django"
  ],
  "Meta": {},
  "Port": 80,
  "Address": "",
  "Weights": {
    "Passing": 1,
    "Warning": 1
  },
  "EnableTagOverride": false,
  "ContentHash": "318c41a7ce882f20",
  "Datacenter": "vm-dc1"
}

--

cat file.txt | jq . > file.json
$ cat file.json
{
  "ID": "web",
  "Service": "web",
  "Tags": [
    "django"
  ],
  "Meta": {},
  "Port": 80,
  "Address": "",
  "Weights": {
    "Passing": 1,
    "Warning": 1
  },
  "EnableTagOverride": false,
  "ContentHash": "318c41a7ce882f20",
  "Datacenter": "vm-dc1"
}

cat file.txt | jq -c

cat file.txt | jq -c
{"ID":"web","Service":"web","Tags":["django"],"Meta":{},"Port":80,"Address":"","Weights":{"Passing":1,"Warning":1},"EnableTagOverride":false,"ContentHash":"318c41a7ce882f20","Datacenter":"vm-dc1"}
cat file.txt | jq -c > file.jsonl
$ cat file.jsonl
{"ID":"web","Service":"web","Tags":["django"],"Meta":{},"Port":80,"Address":"","Weights":{"Passing":1,"Warning":1},"EnableTagOverride":false,"ContentHash":"318c41a7ce882f20","Datacenter":"vm-dc1"}

 

728x90