我需要使用 jq 将 JSON 字符串转换为表格格式,以便在终端中显示输出,如下所示。
{
"results": [
[
{
"field": "@timestamp",
"value": "2023-07-03 08:28:00.000"
},
{
"field": "CpuReserved",
"value": "8192.0"
},
{
"field": "CpuUtilized",
"value": "4056.412942708333"
},
{
"field": "MemoryReserved",
"value": "61440"
},
{
"field": "MemoryUtilized",
"value": "4311"
},
{
"field": "@ptr",
"value": "CpABClUKUTE0NjcxNzAzNzI0NzovYXdzL2Vjcy9jb250YWluZXJpbnNpZ2h0cy9pcmwtaW5mcmEtc2hhcmVkLWplbmtpbnMtbWFpbi9wZXJmb3JtYW5jZRABEjUaGAIGSaxosQAAAAAd+TFeAAZKKHIwAAABEiABKIDF9taRMTDA7v3WkTE4BkC9NEjNPFCBIRgAEAAYAQ=="
}
],
[
{
"field": "@timestamp",
"value": "2023-07-03 08:28:00.000"
},
{
"field": "CpuReserved",
"value": "8192.0"
},
{
"field": "CpuUtilized",
"value": "4056.412942708333"
},
{
"field": "MemoryReserved",
"value": "61440"
},
{
"field": "MemoryUtilized",
"value": "4311"
},
{
"field": "@ptr",
"value": "CpABClUKUTE0NjcxNzAzNzI0NzovYXdzL2Vjcy9jb250YWluZXJpbnNpZ2h0cy9pcmwtaW5mcmEtc2hhcmVkLWplbmtpbnMtbWFpbi9wZXJmb3JtYW5jZRABEjUaGAIGSaxosQAAAAAd+TFeAAZKKHIwAAABEiABKIDF9taRMTDA7v3WkTE4BkC9NEjNPFCBIRgAEAEYAQ=="
}
]
]
}
我想在终端中显示的内容如下:
@timestamp CpuReserved CpuUtilized MemoryReserved MemoryUtilized
==========================================================================================
2023-07-03 08:16:00.000 8192.0 410.5300065104166 61440 1417
2023-07-03 08:15:00.000 8192.0 702.310791015625 61440 792
有人可以引导我走向正确的方向吗?
或许:
如果没有
--barred
,看起来像:您还可以将该命令的输出通过管道传输
jq
到vd -f json
( VisiData ) 而不是mlr
( Miller ) 以获取交互式表查看器。它们用于
jq
提取信息并且mlr
仅用于格式化表格。的功能集jq
和 的功能集之间存在一些重叠mlr
。例如,您还可以删除@ptr
带有mlr
s的列cut
:该
jq
命令被分解并评论:结果不是 JSON,而是多个 JSON 连接在一起,但两者
jq
都mlr
支持。对于-c
(compact),这就是 NDJSON(换行符分隔的 JSON),其中每行一个 JSON,也受vd
. 为了获得正确的 JSON,我们需要:我们在数组
map
上使用.results
它,因此它会生成另一个 JSON 数组,而不是迭代元素。所以最终的结果是一个大数组。这也得到了支持jq
(显然这是正确的 JSON),mlr
并且vd
, 的输入时间有点长,意味着这些工具需要先读到]
最后的结尾,然后才能进行任何操作。但在实践中,我并没有检查这是否会对性能产生任何影响。完后还有:
笔记:
from_entries
会将键值对数组转换为对象。xsv table
仅用于美观打印,您可以将其删除。我想我找到了答案:
另一个用于
jq
发出制表符分隔值并column
对其进行美化的方法