잔나 테마 라이선스가 확인되지 않았습니다. 테마 옵션 페이지로 이동하여 라이선스를 확인하세요. 각 도메인 이름에 대해 단일 라이선스가 필요합니다.

jq 명령을 사용하여 Linux에서 JSON 데이터 구문 분석

JSON 데이터 처리는 소프트웨어 개발자와 시스템 관리자에게 필수적인 기술입니다. jq 명령은 JSON 데이터를 쉽고 효과적으로 분석하고 수정할 수 있는 강력하고 유연한 도구를 제공합니다. 웹 애플리케이션과 클라우드 서비스에서 JSON에 대한 의존도가 높아지면서 JQ를 사용하여 다양한 작업을 원활하게 수행하는 방법을 이해하는 것이 필수적입니다. 이 기사에서는 jq의 기본 명령과 이를 사용하여 데이터 처리를 촉진하고 여기에서 중요한 정보를 추출하는 방법을 살펴보겠습니다.

Linux에서 JSON 데이터를 구문 분석하기 위해 jq 명령 사용

Jq는 파일 및 UNIX 파이프에서 JSON 데이터를 스트리밍하고 필터링할 수 있는 매우 강력하고 유연한 파서 프로그램입니다. 이 기사에서는 jq의 기본 사항을 설명하고 코드 예제는 물론 지금 설치할 수 있는 몇 가지 대체 애플리케이션을 제공합니다.

GQ는 어디에 사용되나요?

명령 jq JSON(JavaScript Object Notation) 데이터를 조작하고 편집하는 데 사용되는 명령줄 도구입니다. JQ는 구조화된 데이터를 쉽고 효율적으로 작업할 수 있는 기능으로 인해 소프트웨어 개발자와 스크립트 작성자에게 인기 있는 선택입니다. 다음은 jq의 주요 용도 중 일부입니다.

  1. 데이터 분석: JQ를 사용하면 특정 요소나 값 등 JSON 데이터의 특정 부분을 추출할 수 있어 크고 복잡한 데이터를 더 쉽게 이해할 수 있습니다.
  2. 데이터 수정: jq를 사용하여 요소 추가 또는 삭제, 값 변경 등 JSON 데이터를 수정할 수 있습니다.
  3. 데이터 형식:jq는 JSON 데이터를 더 읽기 쉬운 방식으로 형식화할 수 있으므로 더 나은 데이터 분석에 도움이 됩니다.
  4. 데이터 필터링: jq는 특정 조건을 충족하는 모든 항목을 가져오는 등 특정 기준에 따라 데이터를 필터링하는 데 사용할 수 있습니다.
  5. 데이터 변환: jq를 사용하면 JSON 데이터를 CSV와 같은 다른 형식으로 변환하여 다른 애플리케이션에서 더 쉽게 사용할 수 있습니다.
  6. 데이터 병합:jq를 사용하면 여러 JSON 데이터를 단일 파일로 결합할 수 있으므로 더 나은 데이터 관리에 도움이 됩니다.

전반적으로 jq는 JSON 데이터 작업을 더욱 쉽고 효율적으로 만들어 주는 강력하고 유연한 도구입니다. 특히 프로그래밍이나 시스템 관리 환경에서 크고 복잡한 데이터를 작업할 때 더욱 그렇습니다.

jq의 가장 일반적인 용도는 SaaS(Software as a Service) API의 JSON 응답을 처리하는 것입니다. 예를 들어 cURL과 함께 jq를 사용하면 Digitalocean의 API 엔드포인트를 활용하여 계정 세부정보를 얻을 수 있습니다.

Digitalocean API 액세스 양식을 jq에 노출하는 터미널입니다.
그 외에도 jq는 대용량 JSON 파일을 관리하는 강력한 유틸리티이기도 합니다. MongoDB, PostgreSQL, MySQL 등 오늘날 가장 인기 있는 데이터베이스 소프트웨어 중 일부는 데이터 저장 수단으로 JSON을 지원합니다. 따라서 jq를 배우면 이러한 데이터베이스 시스템의 작동 방식을 이해하는 데 도움이 됩니다.

알아두면 좋은 점: Chrome 내에서 JSON 파일을 편집하기 위한 최고의 도구에 대해 알아보세요.

jq 설치 및 사용

설치 및 사용 방법은 다음과 같습니다. jq 다양한 운영 체제에서:

Linux에서 JSON 데이터를 구문 분석하기 위해 jq 명령 사용 Linux에서 JSON 데이터를 구문 분석하기 위해 jq 명령을 사용하세요 Linux에서 JSON 데이터를 구문 분석하기 위해 jq 명령을 사용하세요

JQ 설치

Windows에서

  1. 초콜릿을 사용하여:
    • 관리자 권한으로 명령 프롬프트를 엽니다.
    • 다음 명령을 입력합니다.
      세게 때리다
      choco install jq
  2. 실행 파일 다운로드:
    • 실행 파일은 다음에서 다운로드할 수 있습니다. GitHub의 jq 저장소.
    • 시스템의 폴더에 파일을 배치하고 해당 폴더를 시스템 경로(PATH)에 추가합니다.

macOS에서

  1. 홈브류 사용:
    • 터미널 앱을 엽니다.
    • 다음 명령을 입력합니다.
      세게 때리다
      brew install jq

리눅스에서

  • 배포용 데비안 / 우분투:
    세게 때리다
    sudo apt-get install jq
  • 배포용 레드햇/페도라:
    세게 때리다
    sudo dnf install jq
  • 배포용 아치 리눅스:
    세게 때리다
    sudo pacman -S jq

JQ 사용

Linux에서 JSON 데이터를 구문 분석하기 위해 jq 명령 사용

Linux에서 JSON 데이터를 구문 분석하기 위해 jq 명령 사용 Linux에서 JSON 데이터를 구문 분석하기 위해 jq 명령 사용

1. 데이터 표시

다음과 같은 JSON 파일이 있다고 가정합니다. data.json, 다음을 사용하여 이 파일의 내용을 볼 수 있습니다.

세게 때리다
jq . data.json

2. 특정 요소 추출

특정 항목을 추출하려면 다음을 사용하십시오.

세게 때리다
jq '.key' data.json

예를 들어 다음과 같은 경우가 있습니다.

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

다음을 사용하여 이름을 추출할 수 있습니다.

세게 때리다
jq '.name' data.json

3. JSON 형식

다음을 사용하여 JSON 데이터를 더 읽기 쉽게 형식화할 수 있습니다.

세게 때리다
jq '.' data.json

4. 데이터 필터링

항목 배열이 포함된 데이터가 있다고 가정하면 특정 조건에 따라 항목을 필터링할 수 있습니다. 예를 들어:

JSON
[
{ "name": "Alice", "age": 25 },
{ "name": "Bob", "age": 30 }
]

25년보다 오래된 항목을 가져오려면 다음 단계를 따르세요.

세게 때리다
jq '.[] | select(.age > 25)' data.json

5. 데이터 수정

값을 수정할 수도 있습니다. 예를 들어 이름을 "Charlie"로 변경하려면 다음과 같이 하세요.

세게 때리다
jq '.name = "Charlie"' data.json

Linux에서 JSON 데이터를 구문 분석하기 위해 jq 명령 사용 Linux에서 JSON 데이터를 구문 분석하기 위해 jq 명령 사용 Linux에서 JSON 데이터를 구문 분석하기 위해 jq 명령 사용

jq 명령줄에서 JSON 데이터를 처리하기 위한 강력한 도구로, 소프트웨어 개발자와 시스템 관리자에게 매우 유용합니다. jq 사용법을 배우면 데이터 작업 효율성을 크게 향상시킬 수 있습니다.

jq를 시작하려면 시스템에 바이너리 패키지를 설치하세요.
기본 사항을 익힌 후 다음 섹션에서는 jq로 수행할 수 있는 몇 가지 트릭을 보여줍니다.

알아두면 좋은 점: Linux에서 sed를 사용하여 텍스트 스트림을 처리하는 방법을 알아보세요.

1. jq를 사용하여 기본 피드 리더 만들기

Linux에서 JSON 데이터를 구문 분석하기 위해 jq 명령 사용 Linux에서 JSON 데이터를 구문 분석하기 위해 jq 명령을 사용하세요 Linux에서 JSON 데이터를 구문 분석하기 위해 jq 명령 사용

오늘날 대부분의 최신 웹사이트는 플랫폼 내에서 데이터를 읽을 수 있는 개방형 API 엔드포인트를 제공합니다. 예를 들어, 각 Github 저장소에는 해당 프로젝트의 최신 커밋과 문제를 검색할 수 있는 자체 API URL이 있습니다.

Github API에 대한 기본 "코드 월"을 표시하는 터미널입니다.
jq와 함께 이와 같은 API 엔드포인트를 사용하여 간단한 "RSS와 유사한" 피드를 생성할 수 있습니다. 시작하려면 cURL을 사용하여 엔드포인트가 제대로 작동하는지 테스트하세요.

컬 https://api.github.com/repos/bitcoin/bitcoin/issues
피드의 첫 번째 항목을 인쇄하려면 다음을 실행하세요.

컬 https://api.github.com/repos/bitcoin/bitcoin/issues | GQ '.[0]'
Github API가 jq로 보내는 다양한 필드가 표시됩니다. 이를 사용하면 중괄호({})가 포함된 필터에 입력을 전달하여 고유한 사용자 지정 JSON 객체를 생성할 수 있습니다.

컬 https://api.github.com/repos/bitcoin/bitcoin/issues | JK'.[0] | {제목: .제목}'
중괄호 안에 쉼표 필터(,)를 추가하면 사용자 정의 개체에 여러 필드를 추가할 수 있습니다.

컬 https://api.github.com/repos/bitcoin/bitcoin/issues | JK'.[0] | {제목: .title, URL: .html_url, 작성자: .user.login}'
Github API의 사용자 정의 JSON 객체를 표시하는 터미널입니다.
대괄호 안의 "0"을 제거하면 jq 필터가 전체 피드에 적용됩니다.

컬 https://api.github.com/repos/bitcoin/bitcoin/issues | GQ'.[] | {제목: .title, URL: .html_url, 작성자: .user.login}'

또한 작은 Bash 스크립트를 만들어 즐겨 사용하는 Github 프로젝트의 최신 버전을 표시할 수도 있습니다. 다음 코드 블록을 빈 셸 텍스트 파일에 붙여넣습니다.

#!/bin/bash # 사용법: ./script.sh [0…29] REPO=”https://api.github.com/repos/bitcoin/bitcoin/issues” 컬 $REPO | jq “.[$1] | {제목: .title, URL: .html_url, 작성자: .user.login}”

파일을 저장한 후 다음 명령을 실행하여 실행 가능하게 만듭니다.

chmod u+x ./script.sh
즐겨찾는 Github 저장소에 최신 버전을 나열하여 새 피드 리더를 테스트하세요.

./script.sh 0
실행 중인 사용자 정의 스크립트를 표시하고 Github에서 최신 버전을 인쇄하는 터미널입니다.

참고: Linux에서 RSS-Bridge를 사용하여 사용자 정의 RSS 피드를 만드는 방법을 알아보세요.

2. JSON 데이터베이스 읽기 및 검색

Linux에서 JSON 데이터를 구문 분석하기 위해 jq 명령 사용 Linux에서 JSON 데이터를 구문 분석하기 위해 jq 명령 사용

API에서 데이터를 읽는 것 외에도 jq를 사용하여 로컬 시스템에서 JSON 파일을 관리할 수도 있습니다. 선호하는 텍스트 편집기를 사용하여 간단한 JSON 데이터베이스 파일을 생성하는 것부터 시작하세요.

나노 ./database.json
다음 데이터 블록을 파일에 붙여넣은 후 저장합니다.

[ {“id”: 1, “name”: “Ramces”, “balance”: 20}, {“id”: 2, “name”: “Alice”, “balance”: 30}, {“id”: 3, “name”: “Bob”, “balance”: 10}, {“id”: 4, “name”: “Charlie”, “balance”: 20}, {“id”: 5, “name”: “Maria”, “balance”: 50 ]
데이터베이스 배열의 첫 번째 객체를 인쇄하여 jq가 JSON 파일을 올바르게 읽는지 테스트합니다.

jq '.[0]' 데이터베이스.json
터미널은 JSON 데이터베이스의 첫 번째 항목을 인쇄할 때 jq를 표시합니다.
"객체 식별자-색인" 필터를 사용하여 JSON 데이터베이스에서 쿼리를 실행합니다. 제 경우에는 데이터베이스의 각 항목에서 ".name" 키 값을 검색합니다.

GQ'.[] | 데이터베이스 “.name”.json
또한 jq의 내장 함수 중 일부를 사용하여 특정 속성을 기반으로 쿼리를 필터링할 수도 있습니다. 예를 들어, 6자를 초과하는 ".name" 값을 포함하는 모든 JSON 객체를 찾아서 인쇄할 수 있습니다.

GQ'.[] | select((.name|length)>6)' 데이터베이스.json
터미널은 이름 길이 제한이 있는 jq 출력을 표시합니다.
jq를 사용하여 JSON 데이터베이스 작업하기
또한 jq는 기본 스프레드시트와 유사한 JSON 데이터베이스에서 작업할 수 있습니다. 예를 들어, 다음 명령은 데이터베이스의 각 개체에 대한 ".balance" 키의 합계를 인쇄합니다.

GQ'[.[] | .균형] | 데이터베이스.json 추가
쿼리에 조건문을 추가하여 이를 확장할 수도 있습니다. 다음은 두 번째 개체의 ".name" 값이 "Alice"인 경우에만 ".balance"를 추가합니다.

jq 'if .[1].name == “앨리스” then [ .[] | .균형] | Database.json 끝에 또 다른 "두 번째 이름은 Alice가 아닙니다"를 추가합니다.
터미널은 데이터베이스에서 실행 중인 jq의 조건문을 표시합니다.
JSON 데이터베이스에서 변수를 일시적으로 제거할 수 있습니다. 이는 필터를 테스트하고 필터가 여전히 데이터 세트를 처리할 수 있는지 확인하려는 경우에 유용할 수 있습니다.

jq 'del(.[1].name) | .[]' 데이터베이스.json

터미널은 JSON 키 이름 없이 두 번째 항목을 표시합니다.
"+" 연산자를 사용하여 데이터베이스에 새 변수를 삽입할 수도 있습니다. 예를 들어, 다음 줄은 데이터베이스의 첫 번째 개체에 "active: true" 변수를 추가합니다.

JK'.[0] + {활성:true}' 데이터베이스.json
터미널은 첫 번째 데이터베이스 항목에 추가 키 값을 표시합니다.
참고: jq 명령의 출력을 원래 데이터베이스 파일인 jq'.[0]으로 이식하여 변경 사항을 영구적으로 만들 수 있습니다. + {활성: true}' 데이터베이스.json > 데이터베이스.json.

3. JSON이 아닌 데이터를 jq로 변환

jq의 또 다른 뛰어난 기능은 JSON이 아닌 데이터를 받아들이고 작업할 수 있다는 것입니다. 이를 달성하기 위해 프로그램은 줄 바꿈으로 구분된 모든 공간과 데이터를 JSON 배열로 변환하는 대체 "슬러프 모드"를 사용합니다.

-s 플래그를 사용하여 jq에 데이터를 전달하면 이 기능을 활성화할 수 있습니다.

에코 '1 2' | jk-s.
JSON 배열로 변환된 텍스트 문자열을 표시하는 터미널입니다.
원시 데이터를 배열로 변환하면 배열의 인덱스 번호를 사용하여 조작할 수 있다는 장점이 있습니다. 다음 명령은 변환된 배열의 위치를 ​​가리켜 두 개의 값을 추가합니다.

에코 '1 2' | gq -s'.[0] + .[1]'
이 배열 위치를 개발하고 그 주위에 새로운 JSON 코드를 생성할 수 있습니다. 예를 들어 다음 코드는 중괄호 필터를 통해 echo 명령의 텍스트를 JSON 개체로 변환합니다.

echo '6 '말로리' 10' | jq -s '{“id”: .[0], “name”: .[1], “balance”: .[2]}'
데이터베이스 모델 형식으로 사용자 정의 JSON 객체를 표시하는 터미널입니다.
원시 데이터를 가져오는 것 외에도 jq는 JSON이 아닌 데이터를 출력으로 반환할 수도 있습니다. 이는 더 큰 스크립트의 일부로 jq를 사용하고 해당 필터의 결과만 필요한 경우에 유용합니다.

이렇게 하려면 jq를 실행한 다음 -r 플래그를 실행하세요. 예를 들어, 다음 명령은 내 데이터베이스 파일에서 모든 이름을 읽고 이를 일반 텍스트 데이터로 반환합니다.

jq -r '.[] | 데이터베이스 “.name”.json
터미널은 형식이 제거된 데이터베이스의 이름 목록을 표시합니다.
jq용 대체 JSON 파서

jq 코드는 오픈 소스이므로 많은 개발자가 자신만의 JSON 파서 버전을 만들었습니다. 각각에는 jq의 핵심 부분을 개선하거나 변경하는 고유한 판매 포인트가 있습니다.

1. 자크

Jaq은 jq에 맞춰 조정된 거의 동일한 기능을 제공하는 강력한 JSON 파서입니다.

Rust로 작성된 Jaq의 가장 큰 판매 포인트 중 하나는 이전 버전과의 호환성을 유지하면서 기본 파서보다 최대 30배 빠르게 jq를 실행할 수 있다는 것입니다. 이것만으로도 큰 jq 필터를 실행하고 장치 성능을 최대화하려는 경우 가치가 있습니다.

샘플 데이터베이스에서 실행 중인 jaq를 보여주는 터미널입니다.
그러나 jaq의 한 가지 단점은 현재 Debian, Ubuntu 및 Fedora 리포지토리에서 사용할 수 없다는 것입니다. 이를 얻는 유일한 방법은 Homebrew를 다운로드하거나 소스에서 컴파일하는 것입니다.

2. 고이크

Gojq는 전적으로 Go로 작성된 대체 JSON 파서입니다. 거의 모든 플랫폼에 설치할 수 있는 액세스 가능하고 사용자 친화적인 jq 버전을 제공합니다.

기본 jq 소프트웨어는 오류 메시지가 매우 간결할 수 있습니다. 결과적으로 새로운 jq 사용자에게는 jq 스크립트 디버깅이 특히 어렵습니다. Gojq는 스크립트에서 오류가 있는 위치를 표시하고 어떤 유형의 오류가 발생했는지에 대한 자세한 메시지를 제공하여 이 문제를 해결합니다.

읽을 수 있는 gojq용 모델 데이터베이스를 표시하는 터미널입니다.
gojq의 또 다른 판매 포인트는 JSON 및 YAML 파일을 읽고 처리할 수 있다는 것입니다. 이는 Docker 및 Docker Compose 사용자이고 배포 워크플로를 자동화하려는 경우 특히 유용할 수 있습니다.

Gojq의 가장 큰 문제는 기본 jq 파서에서 기본적으로 제공되는 일부 기능을 제거했다는 것입니다. 예를 들어 –ascii-output, –seq 및 –sort-keys와 같은 옵션은 gojq에 존재하지 않습니다.

참고: 오늘날 최고의 JSON 미화 도구를 사용하여 JSON 코드를 최적화하는 방법을 알아보세요.

3.fq

jaq 및 gojq와 달리 fq는 텍스트 및 바이너리 데이터를 분석할 수 있는 포괄적인 소프트웨어 툴킷입니다. JSON, YAML, HTML, FLAC 등 널리 사용되는 다양한 형식과 함께 작동할 수 있습니다.

일반적인 데이터베이스 파일을 읽는 fq를 보여주는 터미널.
fq의 가장 큰 특징은 파일에 대한 16진수 판독기가 내장되어 있다는 것입니다. 이렇게 하면 파일의 내부 구조를 보다 쉽게 ​​확인하여 파일이 생성된 방법과 문제가 있는지 확인할 수 있습니다. 그 외에도 fq는 텍스트를 처리할 때 jq와 동일한 구문을 사용하므로 jq에 익숙한 사람이라면 누구나 쉽게 배울 수 있습니다.

이 야심찬 목표의 한 가지 단점은 FQ가 여전히 집중적으로 개발되고 있다는 것입니다. 따라서 일부 소프트웨어 기능과 동작은 여전히 ​​광범위하게 변경될 수 있습니다.

JQ를 탐색하고, 작동 방식과 이를 특별하게 만드는 것은 컴퓨터에서 프로그램을 만드는 방법을 배우는 첫 번째 단계일 뿐입니다. 쉘 프로그래밍의 기초를 읽고 놀라운 프로그래밍 세계로 뛰어들어보세요.

JQ는 프로그래밍과 데이터 분석의 세계에서 없어서는 안될 도구입니다. 이 도구의 사용법을 익히면 JSON 데이터 처리 프로세스의 속도를 높이고 더 효율적으로 만들 수 있습니다. 이 기사에 제시된 다양한 명령과 템플릿을 실험하여 데이터 작업에 더욱 전문적이 되고, JQ가 제공하는 기능을 활용하여 향후 프로젝트에서 생산성을 향상시키세요.

맨 위로 이동 버튼