2016-06-14 1 views
0

나는 다음 curl 명령을 사용하고 있습니다 :bash를 사용하여 json에서 "name"값을 검색하는 방법은 무엇입니까?

curl -s -v --user admin:orca --insecure -X GET https://insecure.registry.com/api/v0/repositories/authi-api/tags 

얻기 다음과 같은 출력 :

{ 
    "name": "Dev_ReleaseRollout_Lane-3", 
    "inRegistry": true, 
    "hashMismatch": false, 
    "inNotary": false 
    }, 
    { 
    "name": "Dev_ReleaseRollout_Lane-latest", 
    "inRegistry": true, 
    "hashMismatch": false, 
    "inNotary": false 
    }, 
    { 
    "name": "Payments_Dev_Lane-267", 
    "inRegistry": true, 
    "hashMismatch": false, 
    "inNotary": false 
    } 

내가 변수 만 name 값을 얻을 싶어요. [].name은 각 요소에서 이름을, . 배열입니다, 그것은 매우 간단

$ curl ... | jq -r '.[].name' 
Dev_ReleaseRollout_Lane-3 
Dev_ReleaseRollout_Lane-latest 
Payments_Dev_Lane-267 

:
나는 당신이 실제로 세 개의 객체 주위에 배열을 가정 변수

+0

지금까지 시도한 명령과 그 결과는 무엇입니까? –

+0

배열을 얻는가 :'[...]'또는 위에서 언급 한 출력? – andlrc

답변

0

에서 Dev_ReleaseRollout_Lane-3Dev_ReleaseRollout_Lane-latestPayments_Dev_Lane-267 만하면 정렬. -r은 원시 출력입니다. 이 옵션을

--raw-output/-r:

, 필터의 결과는 오히려 따옴표와 JSON 문자열로 형식화되지 않고 표준 출력에 직접 기록됩니다 문자열 인 경우. jq 필터가 비 JSON 기반 시스템과 통신하는 데 유용 할 수 있습니다.

cURL을 출력 작동합니다 다음 위에서 언급 실제로 같은 경우

jq -rRs '"[\(.)]" | fromjson[].name' file.json 

그러나 나는

-R

원시 입력, 입력 주변에 배열을 포장 할 수있는 더 좋은 방법이 있다고 생각 -s은 잘립니다. \(...)string interpolation입니다.

--slurp/-s:
대신 입력 각 JSON 객체 필터를 실행 큰 배열 전체 입력 스트림을 판독 한 번만 실행 필터.

관련 문제