JSON(JavaScript Object Notation)은 데이터를 표현하는 데 널리 사용되는 포맷입니다. Linux 환경에서는 jq라는 강력한 커맨드라인 JSON 프로세서가 있어, JSON 데이터를 쉽게 파싱하고 조작할 수 있습니다. 이 글에서는 jq의 사용법과 다양한 예제를 통해 Bash 스크립트에서 JSON을 어떻게 다루는지 알아보겠습니다.
jq 명령어 소개
jq는 JSON 데이터를 필터링, 변환, 탐색하는 데 매우 유용한 도구입니다. 간단한 명령어로 복잡한 JSON 데이터 구조를 다룰 수 있으며, Bash 스크립트와 함께 사용하면 더욱 강력한 기능을 발휘합니다.
기본 사용법
jq의 기본 사용법은 아래와 같습니다:
jq [옵션] <필터> [파일]
여기서 옵션은 jq의 동작 방식을 조정하며, 필터는 JSON 데이터에서 원하는 정보를 추출하는 역할을 합니다.
사례 1: JSON 파일에서 특정 키의 값 추출하기
예를 들어, 아래와 같은 JSON 파일이 있다고 가정해 보겠습니다:
{
"users": [
{"name": "Alice", "age": 30},
{"name": "Bob", "age": 25}
]
}
이 JSON 파일에서 "users" 배열의 모든 이름을 추출하고 싶다면 다음과 같이 사용할 수 있습니다:
jq '.users[].name' users.json
위 명령어를 실행하면, 결과로 Alice와 Bob이 출력됩니다. 이는 JSON 구조를 간단하게 탐색할 수 있음을 보여줍니다.
사례 2: JSON 데이터에서 조건에 맞는 값 필터링하기
이번에는 사용자의 나이가 28세 이상인 사용자만 추출하는 예제를 살펴보겠습니다. 같은 JSON 파일을 사용하여 다음과 같이 명령어를 실행합니다:
jq '.users[] | select(.age >= 28)' users.json
이 명령어는 select 함수를 사용하여 조건에 맞는 데이터만 필터링합니다. 결과는 다음과 같습니다:
{
"name": "Alice",
"age": 30
}
이 방법을 통해 보다 복잡한 조건부 필터링이 가능하다는 것을 알 수 있습니다.
사례 3: JSON 데이터 업데이트하기
jq를 사용하여 JSON 파일의 데이터를 변경할 수도 있습니다. 예를 들어, 사용자의 나이를 1살 증가시키고 싶다면 아래와 같은 명령어를 사용할 수 있습니다:
jq '.users[].age += 1' users.json
이 명령어는 모든 사용자의 나이를 1 증가시킵니다. jq는 단순히 데이터를 읽는 것뿐만 아니라, 수정하는 기능도 제공하여 JSON 파일의 내용을 손쉽게 업데이트할 수 있게 해줍니다.
실용적인 팁 5가지
1. JSON 파일을 쉽게 읽기 위해 포맷팅하기
JSON 파일이 잘 정리되어 있지 않으면 읽기 어려울 수 있습니다. jq를 사용하여 JSON 데이터를 포맷팅하면 가독성이 향상됩니다. 다음과 같이 사용할 수 있습니다:
jq '.' users.json
이 명령어는 JSON 데이터를 보기 쉽게 정렬합니다. 따라서 복잡한 JSON 구조를 이해하는 데 도움이 됩니다.
2. JSON 데이터의 타입 확인하기
jq를 사용하면 특정 키의 데이터 타입을 확인할 수 있습니다. 예를 들어, 아래 명령어를 사용하여 "age"의 타입을 확인할 수 있습니다:
jq '.users[].age | type' users.json
이렇게 하면 각 사용자의 나이 데이터의 타입이 출력되며, 데이터의 일관성을 유지하는 데 유용합니다.
3. JSON 파일을 CSV로 변환하기
jq를 사용하여 JSON 데이터를 CSV 형식으로 변환할 수 있습니다. 다음 예제는 사용자의 이름과 나이를 CSV로 변환하는 방법입니다:
jq -r '.users[] | [.name, .age] | @csv' users.json
이 명령어는 CSV 형식으로 결과를 출력하여 다른 프로그램과의 호환성을 높여줍니다.
4. JSON 배열의 길이 확인하기
JSON 배열의 길이를 확인하는 것은 데이터의 크기를 파악하는 데 유용합니다. 다음과 같이 사용할 수 있습니다:
jq '.users | length' users.json
이 명령어는 "users" 배열의 길이를 출력하여, 데이터의 양을 쉽게 파악할 수 있게 해줍니다.
5. JSON 필드 추가하기
기존 JSON 데이터에 필드를 추가하고 싶다면, jq를 사용하여 간편하게 추가할 수 있습니다. 예를 들어, 각 사용자에게 "active"라는 필드를 추가할 수 있습니다:
jq '.users[] |= . + {"active": true}' users.json
이 명령어는 기존 데이터에 새로운 필드를 추가하여 JSON을 확장합니다.
요약 및 실천 팁
이번 글에서는 Linux에서 jq 명령어를 사용하여 Bash 스크립트의 JSON을 파싱하고 조작하는 다양한 방법을 살펴보았습니다. JSON 데이터는 비즈니스 로직에서 매우 중요한 요소인 만큼, 이를 효율적으로 다루는 것이 중요합니다. 다음과 같은 실천 팁을 통해 jq를 활용해 보세요:
- JSON 데이터의 구조를 이해한 후 적절한 필터를 사용하여 정보를 추출해 보세요.
- 조건부 필터링을 통해 필요한 데이터만을 선별하는 연습을 해보세요.
- JSON 데이터를 포맷팅하여 가독성을 높이고, 이를 바탕으로 데이터 분석을 수행해 보세요.
- jq의 다양한 옵션을 활용하여 데이터 변환 및 업데이트를 시도해 보세요.
- 주기적으로 JSON 데이터의 구조를 점검하고, 필요한 경우 스크립트를 수정하여 유지 관리하세요.
이제 jq의 다양한 기능을 활용하여 JSON 데이터를 보다 효율적으로 관리해 보세요!