나는 이런 JSON을 가지고 있습니다
{
"status": "InProgress",
"transactionId": "1652807586",
"startTime": "2022-05-17T17:13:06Z",
"viewIdContexts": {
"dtve2.2": {
"subgraphStatusCounts": {
"end": 10,
"start": 4,
"startReturned": 127
}
}
}
}
끝과 시작을 빼고 json에 추가하여 예상 결과는 다음과 같습니다.
{
"status": "InProgress",
"transactionId": "1652807586",
"startTime": "2022-05-17T17:13:06Z",
"viewIdContexts": {
"dtve2.2": {
"subgraphStatusCounts": {
"end": 10,
"start": 4,
"result": 6,
"startReturned": 127
}
}
}
}
jq에서 이것을 달성하는 방법
답변1
jq '.result = .end - .start'
이는 입력 JSON 문서를 읽고 최상위 키를 result
빼기 결과로 설정합니다.start
end
실행 예시:
$ echo '{ "end": 10, "start": 4 }' | jq '.result = .end - .start'
{
"end": 10,
"start": 4,
"result": 6
}
jq
-c
"컴팩트" 출력을 위한 옵션과 함께 사용합니다 .
업데이트 질문에서 JSON 문서를 사용하여 관련 부분을 선택하고 |=
결과( )로 업데이트합니다.
jq '.viewIdContexts."dtve2.2".subgraphStatusCounts |= (.result = .end - .start)'
키 중 하나에는 점이 포함되어 있으므로 따옴표로 묶어야 합니다.
이 답변의 첫 번째 명령은 다음 명령을 단순화한 것입니다.
jq '. |= (.result = .end - .start)'
이는 답변의 이 부분에서 더 긴 명령과 얼마나 유사한지를 보여줍니다.