jq: 하위 개체 값으로 최상위 값을 반복하여 각 하위 개체 값에 대한 줄을 인쇄하는 방법

jq: 하위 개체 값으로 최상위 값을 반복하여 각 하위 개체 값에 대한 줄을 인쇄하는 방법

json에서 특정 값(하위 개체당 한 행)만 인쇄하고 각 행의 최상위 개체에서 하나의 값을 반복하려고 합니다.

입력 예:

[
    {
        "name": "level1Name",
        "lv1id": "id1",
        "requests": [
            {
                "lv2id": "id2",
                "name": "lvl2requestA",
                "startDate": "2019-02-05 08:52:33.663+0000",
                "requestState": "Succeeded"
            },
            {
                "lv2id": "id2",
                "name": "lvl2requestB",
                "startDate": "2019-02-05 08:52:33.421+0000",
                "requestState": "Succeeded"
            }
        ]
    },
    {
        "name": "level1Name",
        "lv1id": "id12",
        "requests": [
            {
                "lv2id": "id2",
                "name": "lvl2requestD",
                "startDate": "2019-02-05 08:52:19.823+0000",
                "requestState": "Succeeded"
            },
            {
                "lv2id": "id2",
                "name": "lvl2requestA",
                "startDate": "2019-02-05 08:52:19.689+0000",
                "requestState": "Succeeded"
            }
        ]
    }
]

목표 출력

["id1","2019-02-05 08:52:33.663+0000","lvl2requestA","Succeeded"]
["id1","2019-02-05 08:52:33.421+0000","lvl2requestB","Succeeded"]
["id12","2019-02-05 08:52:19.823+0000","lvl2requestD","Succeeded"]
["id12","2019-02-05 08:52:19.689+0000","lvl2requestA","Succeeded"]

여러 번 시도했습니다(예: 변수/기호 바인딩 연산자 사용). 모든 리드를 환영합니다.

답변1

$ jq -c '.[] | .lv1id as $id | .requests[] | [$id, .startDate, .name, .requestState]' file.json
["id1","2019-02-05 08:52:33.663+0000","lvl2requestA","Succeeded"]
["id1","2019-02-05 08:52:33.421+0000","lvl2requestB","Succeeded"]
["id12","2019-02-05 08:52:19.823+0000","lvl2requestD","Succeeded"]
["id12","2019-02-05 08:52:19.689+0000","lvl2requestA","Succeeded"]

이는 최상위 배열( .[])의 각 요소를 가져와 해당 요소 .lv1id를 에 할당합니다 $id. 그런 다음 .requests[]해당 요소 배열을 반복 하고 각 요소에 대한 출력 배열을 구성합니다.그것은$id이전에 기억했던 부분을 포함하여 필요해 보이는 다양한 부분으로 구성된 요소입니다 .

관련 정보