여러 값을 가져 오는 JSON 파일을 구문 분석하려고합니다. 배열 (.info.file.hashes[])
에서 특정 값 ("A"/ "B"/ "C")을 구문 분석하는 방법을 알고 있습니다.여러 값을 가져 오는 Bash JQ JSON 파일의 문제
: 파일을 통해 다음과 같은 명령을 실행하면 b.json
jq -r '.info.file.hashes[] | select(.name == ("A","B","C")).value' b.json
결과 :
f34d5f2d4577ed6d9ceec516c1f5a744
66031dad95dfe6ad10b35f06c4342faa
9df25fa4e379837e42aaf6d05d92012018d4b659
b.json : 이제
{
"Finish": 1475668827,
"Start": 1475668826,
"info": {
"file": {
"Score": 4,
"file_subtype": "None",
"file_type": "Image",
"hashes": [
{
"name": "A",
"value": "f34d5f2d4577ed6d9ceec516c1f5a744"
},
{
"name": "B",
"value": "66031dad95dfe6ad10b35f06c4342faa"
},
{
"name": "C",
"value": "9df25fa4e379837e42aaf6d05d92012018d4b659"
},
{
"name": "D",
"value": "4a51cc531082d216a3cf292f4c39869b462bf6aa"
},
{
"name": "E",
"value": "e445f412f92b25f3343d5f7adc3c94bdc950601521d5b91e7ce77c21a18259c9"
}
],
"size": 500
}
}
}
, 방법이 있습니다 나는 "Finish", "Start"alon과 함께 여러 값을 얻는다. g 해쉬 값? 커맨드를 발행하려고했습니다.
jq -r '.info.file.hashes[] | select(.name == ("A","B","C")).value','.Finish','.Start' b.json
및 임 같은 결과를 얻는 :
f34d5f2d4577ed6d9ceec516c1f5a744
null
66031dad95dfe6ad10b35f06c4342faa
null
9df25fa4e379837e42aaf6d05d92012018d4b659
null
null
null
예상 결과 :
f34d5f2d4577ed6d9ceec516c1f5a744
66031dad95dfe6ad10b35f06c4342faa
9df25fa4e379837e42aaf6d05d92012018d4b659
1475668827
1475668826
jq는 모르지만'.info.file.hashes []'배열에서 시작 및 끝내기를 선택하는 것처럼 보입니다. – 123
당신도 할 수 ...'jq -r '.info.file.hashes [] | .value 'b.json'을 선택하십시오. –
@ l' L' l : 그렇습니다.하지만 해시의 "이름"중 선택적인 "값"만 있으면됩니다. 위의 게시 된 질문의 경우, 선택적인 해시 값과 함께 "마침"및 "시작"값 (1475668827, 1475668826)을 얻으려고합니다. – Arun