조건부로 값 바꾸기, 주석 추가

조건부로 값 바꾸기, 주석 추가

jq는 다음과 같이 csv를 인쇄합니다.

... | [.name, .userId, .groupId] | @csv'

인쇄할 항목:

"nodea","0","6"
"nodeb","1","0"

0 대신 "n/a"를 얻고 >0 값에 대해 적절한 주석/주석을 얻으려면 어떻게 처리해야 합니까? 예:

"nodea","n/a","group:6"
"nodeb","user:1","n/a"

jq에서 가능합니까 아니면 사후 처리에서만 가능합니까? 어, 어? 감사해요

답변1

jq해결책:

샘플 input.json:

[
    {
        "name": "nodea",
        "userId": 0,
        "groupId": 6
    },
    {
        "name": "nodeb",
        "userId": 1,
        "groupId": 0 
    }
]

jq -r 'def pr($k): if .[$k] > 0 then $k+":\(.[$k])" else "n/a" end;
      .[] | [ .name, pr("userId"), pr("groupId") ] | @csv' input.json

산출:

"nodea","n/a","groupId:6"
"nodeb","userId:1","n/a"

관련 정보