쉘 스크립트를 사용하여 json 응답에서 값을 추출하는 방법

쉘 스크립트를 사용하여 json 응답에서 값을 추출하는 방법
{"expand":"renderedFields,names,schema,operations,editmeta,changelog,versionedRepresentations","id":"15114","self":"https://brg-jira-tst.state.mi.us/rest/api/2/issue/15114","key":"BRGTEST-11","fields":{"issuetype":{"self":"https://brg-jira-tst.state.mi.us/rest/api/2/issuetype/10200","id":"10200","description":"A task that needs to be done associated with Bridges project","iconUrl":"https://brg-jira-tst.state.mi.us/secure/viewavatar?size=xsmall&avatarId=10318&avatarType=issuetype","name":"Task","subtask":false,"avatarId":10318},"customfield_11500":"QAT"}}

위는 a.json에 저장된 json 응답입니다.

쉘 스크립트를 사용하여 a.json 응답에서 customfield_11500 값을 추출하고 싶습니다. 그것을하는 방법

이 경우 쉘 명령의 출력은 "QAT" 결과를 제공해야 합니다.


스크롤 혐오를 위한 JSON 형식:

{
  "expand": "renderedFields,names,schema,operations,editmeta,changelog,versionedRepresentations",
  "id": "15114",
  "self": "https://brg-jira-tst.state.mi.us/rest/api/2/issue/15114",
  "key": "BRGTEST-11",
  "fields": {
    "issuetype": {
      "self": "https://brg-jira-tst.state.mi.us/rest/api/2/issuetype/10200",
      "id": "10200",
      "description": "A task that needs to be done associated with Bridges project",
      "iconUrl": "https://brg-jira-tst.state.mi.us/secure/viewavatar?size=xsmall&avatarId=10318&avatarType=issuetype",
      "name": "Task",
      "subtask": false,
      "avatarId": 10318
    },
    "customfield_11500": "QAT"
  }
}

답변1

최신 버전의 ksh93셸( v-또는 그 이상):

read -m json j < file.json &&
  print -r -- "${j.fields.customfield_11500}"

또는 널리 사용 가능한(일반적으로 기본적으로 설치되지는 않음) jqjson 프로세서 도구를 사용하세요.

jq -r '.fields.customfield_11500' file.json

답변2

이를 바탕으로우편 엽서 형식이 지정된 json 파일을 사용합니다.

grep -oP '(?<="customfield_11500": ")[^"]*' a.json

답변3

다음은 다음을 기반으로 한 간단한 대체 솔루션입니다.jtc:

bash $ cat a.json | jtc -w'<customfield_11500>l'
"QAT"
bash $ 

JSON 구조는 JSON 인식 루틴에 의해서만 처리되어야 합니다(그렇지 않으면 거짓 긍정이 불가피함).

관련 정보