쉘 스크립트에서 JSON을 예쁘게 인쇄하기

Abdullah Bukhari 2023년6월20일
쉘 스크립트에서 JSON을 예쁘게 인쇄하기

JSON은 스칼라 데이터와 함께 JavaScript 개체 리터럴 및 배열을 나타내는 텍스트 접근 방식입니다. 읽기와 쓰기가 비교적 쉽고 소프트웨어가 구문 분석하고 생성하는 것이 더 관리하기 쉽습니다.

JSON은 구조화된 데이터를 직렬화하고 일반적으로 서버와 웹 애플리케이션 간에 네트워크를 통해 데이터를 교환하는 데 자주 사용됩니다.

쉘 스크립트에서 JSON을 예쁘게 인쇄하기

JSON으로 작업하는 동안 출력을 사람이 이해할 수 있는 형식으로 원할 수 있습니다. 아래 JSON 개체를 고려하십시오.

{"name": "Ali", "rollno": 123, "fathername": "Muhammad", "mothername": "Qimra", "semester": 5, "roomno": "b-12", }

위의 JSON 객체의 속성을 이해하는 것은 12개의 속성으로도 충분히 어렵기 때문에 수백 개의 속성이 있으면 어떤 종류의 악몽이 될지 상상해 보십시오.

따라서 아래 JSON 속성과 같이 보다 인간 친화적인 형식으로 형식을 지정하는 것이 중요합니다.

{"name": "Ali",
"rollno": 123,
"fathername": "Muhammad",
"mothername": "Qimra",
"semester": 5,
"roomno": "b-12"}

이제 얼마나 깨끗해 보이는지 확인하십시오. 이제 위의 작업을 수행하기 위해 다양한 방법을 살펴보겠습니다.

Python 2.6 이상에서는 다음을 사용할 수 있습니다.

echo '{"key1": "val1", "keyn": "valn"}' | python -m json.tool
# or use
echo '{"key1": "val1", "keyn": "valn"}' | python2 -m json.tool
# or use
echo '{"key1": "val1", "keyn": "valn"}' | python3 -m json.tool

출력은 다음과 같습니다.

{
    "key1": "val1",
    "keyn": "valn"
}

그러나 Python, Python2 또는 Python3를 설치하지 않은 경우 다음 오류 중 하나가 발생합니다.

Command 'python' not found
Command 'python2' not found
Command 'python3' not found

이 오류를 방지하려면 아래 명령을 사용하십시오.

sudo apt install python python2 python3

다른 방법은 JSON 파일에 저장된 JSON 개체가 있는 경우 아래 명령을 실행하는 것입니다.

python -m json.tool <path to json file>.json

경우에 따라 JSON이 API와 같은 인터넷 소스에서 가져온 경우 다음을 사용합니다.

curl <url> | python -m json.tool

이제 위의 작업을 수행하는 다른 방법을 살펴보겠습니다.

다음 구조의 my_json.json 파일이 있다고 가정합니다.

{ "key1": "val1", " keyn": "valn" }

파일이 거기에 있으므로 현재 디렉터리를 지정하기 위해 (.)를 사용합니다.

sudo jq . my_json.json | less –R

jq '.key1' <<< '{ "key1": "val1", " keyn": "valn" }'

cat my_json.json| jq .

echo '{ "key1": "val1", " keyn": "valn" }' | npx json

jq를 사용하려면 아래 명령을 사용하여 설치해야 합니다.

sudo apt install jq

첫 번째, 세 번째(파이프를 사용하여 my_json.json 파일에서 jq 프로세스로 데이터를 전송) 및 네 번째 방법의 출력은 다음과 같습니다.

{
    "key1": "val1",
    "keyn": "valn"
}

네 번째 방법은 npx의 종속성이 필요하지만 해당 명령을 실행할 때 걱정하지 마십시오. npx가 아직 없는 경우 자동으로 설치됩니다.

두 번째 방법은 JSON 개체를 정의하고 키 key1 값을 인쇄합니다. 다음은 출력입니다.

"val1"

Python의 json.toolpigmentize를 결합하여 JSON 개체를 예쁘게 인쇄할 수도 있습니다. 아래 명령을 고려하십시오.

echo '{ "key1": "val1", " keyn": "valn" }' | python -m json.tool | pygmentize –g

위 명령의 출력은 다음과 같습니다.

{
    "key1": "val1",
    "keyn": "valn"
}

단, 위 명령어를 사용하기 위해서는 pigmentize를 설치해야 합니다. pigmentize를 설치하려면 아래 명령을 사용하십시오.

sudo apt install python3-pygments