条件付きの値の変更、コメントの追加

条件付きの値の変更、コメントの追加

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"

関連情報