我正在使用此命令从Json中提取一些信息。
#!/bin/bash
TOKEN=$(oc whoami -t)
ENDPOINT=$(oc config current-context | cut -d/ -f2 | tr - .)
NAMESPACE=$(oc config current-context | cut -d/ -f1)
curl -k \
-H "Authorization: Bearer $TOKEN" \
-H 'Accept: application/json' \
https://$ENDPOINT/api/v1/resourcequotas | jq -jr '[[.items[].metadata.namespace ], [.items[].metadata.creationTimestamp ], [.items[].spec.hard["requests.storage"]],[.items[].status.used["requests.storage"]],[.items[].spec.hard["limits.cpu"]],[.items[].spec.hard["limits.memory"]],[.items[].status.used["limits.cpu"]],[.items[].status.used["limits.memory"]]] ' > item.txt
当我执行脚本时,它会返回带有以下内容的txt文件:
[
[
"glusterfs",
"timpdv",
"timpdv",
"whatsappprd",
"whatsappprd",
"wso2ms",
"wso2ms"
],
[
"2019-12-12T13:47:25Z",
"2019-01-10T19:53:29Z",
"2019-01-10T20:36:18Z",
"2019-02-15T17:39:43Z",
"2019-02-13T18:20:30Z",
"2019-12-12T13:49:57Z",
"2019-12-12T13:50:45Z"
],
[
"200Gi",
null,
"300Gi",
null,
"1150Gi",
null,
"200Gi"
],
[
"0",
null,
"68Gi",
null,
"1074Gi",
null,
"0"
],
[
null,
"16",
null,
"192",
null,
"80",
null
],
[
null,
"192Gi",
我需要将此数据作为表返回,每个值都是一列。 例如。
namespace, timestamp, request.storage
"glusterfs", "2019-12-12T13:47:25Z", "200Gi",
"timpdv", "2019-01-10T19:53:29Z", null,
"timpdv", "2019-01-10T20:36:18Z", "300Gi",
答案 0 :(得分:0)
忽略标题行,看起来您想要的jq查询更像这样:
.items[]
| [.metadata.namespace,
.metadata.creationTimestamp,
.spec.hard["requests.storage"],
.status.used["requests.storage"],
.spec.hard["limits.cpu"],
.spec.hard["limits.memory"],
.status.used["limits.cpu"],
.status.used["limits.memory"]]
| @tsv
对于CSV,请使用@csv
代替@tsv
。无论哪种情况,您都可能希望使用-r选项来调用jq。