我需要在電子表格中重新格式化 Popeye Kubernetes 報告。我使用了 jq 但它有點棘手。
{
"popeye": {
"score": 90,
"grade": "A",
"sanitizers": [
{
"sanitizer": "cluster",
"tally": {
"ok": 1,
"info": 0,
"warning": 0,
"error": 0,
"score": 100
},
"issues": {
"Version": [
{
"group": "__root__",
"level": 0,
"message": "[POP-406] K8s version OK"
}
]
}
}
]
}
}
匯出到 csv 的最佳格式類似于:
{
"sanitizer" : "cluster",
"kube-object" : "Version",
"group": "__root__",
"level": 0,
"message": "[POP-406] K8s version OK"
}
我嘗試了很多 jq 命令都沒有成功。
有任何想法嗎 ?
謝謝。
uj5u.com熱心網友回復:
您要求進行 CSV 匯出,但您顯示的是所需格式的物件。因此,我將物件的欄位解釋為 CSV 列:
["sanitizer", "kube-object", "group", "level", "message"],
(.popeye.sanitizers[] | [.sanitizer] (
.issues | to_entries[] | [.key, (.value[] | .group, .level, .message)])
)
| @csv
"sanitizer","kube-object","group","level","message"
"cluster","Version","__root__",0,"[POP-406] K8s version OK"
演示
使用jq's--raw-output或-r引數獲得正確的 CSV 格式。另外,如果不需要標題,請洗掉第一行。
uj5u.com熱心網友回復:
一種選擇是map()與 運算子一起使用,以便以問題中提供的格式生成 JSON,例如
jq - r '.[].sanitizers | map({sanitizer} {"kube-object" : "Version"} .issues.Version[])[]'
在哪里
{"kube-object" : "Version"}
已添加為源 JSON 的不存在的鍵值對
Demo
如果您的目標是逐行生成逗號分隔的鍵值對,請考慮使用
jq -r '.[].sanitizers | map({sanitizer} {"kube-object" : "Version"} .issues.Version[])[] | to_entries[] | "\(.key), \(.value)"'
Demo
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/380613.html
標籤:文件 Kubernetes jq 导出到 csv
