2017-12-14 13 views
1

jq을 사용하여 하나의 json 파일 내용을 다른 파일의 해시에로드하려고합니다. 예 :json을 사용하여 하나의 json 파일을 다른 json 파일의 해시에로드하십시오.

이 파일 :

{ 
    "annotations": {...}, 
    "rows": [ {...}, {...}] 
} 

해시 대시 보드에서이 파일에 삽입해야합니다 : 그래서

{ 
    "dashboard": { }, 
    "overwrite": true, 
    "message": "new commit" 
} 

결과 파일은

{ 
    "dashboard": { 
    "annotations": {...}, 
    "rows": [ {...}, {...}] 
    }, 
    "overwrite": true, 
    "message": "new commit" 
} 

내가 생각해야한다 파이프로 할거야. 또는 = 연산자를 사용하지만 하나의 컨텐트를 사용하고 다른 파일의 선택 필터에 할당하는 방법을 알아낼 수 없습니다.

답변

0

JQ 솔루션 :

jq --slurpfile annot annot.json '.dashboard |= $annot[0]' dashb.json 

--slurpfile variable-name filename :

이 옵션은 지정된 파일의 모든 JSON 텍스트를 읽고 주어진 글로벌 변수에 구문 분석 된 JSON 값의 배열을 결합 . 당신의 JQ가 --slurpfile가없는 경우

+0

--slurpfile 옵션은 내가 필요한 것입니다, 다음을 JQ를 업데이트했다 오히려 명백했다! 고맙습니다! –

0

는, 당신은, 예를 들어, 실행 JQ는 다음 수 같이

jq -s '.[0] as $fragment | .[1] | (.dashboard |= $fragment)' fragment.json dashboard.json 
+0

그런 식으로하는 것은 나쁜 생각이 아닙니다. –