如何使用jq解析基于时间的结果?



我想从这个结果中监视最高的CpuUsage。如何解析在时间基础上改变其类别的json?

{
"MonitorHistory": "{"2021-10-06T00:00:00Z":{"CpuUsage":"0.45"},"2021-10-06T00:01:00Z":{"CpuUsage":"0.57"},"2021-10-06T00:02:00Z":{"CpuUsage":"0.73"},"2021-10-06T00:03:00Z":{"CpuUsage":"0.6"},"2021-10-06T00:04:00Z":{"CpuUsage":"0.45"},"2021-10-06T00:05:00Z":{"CpuUsage":"0.57"},"2021-10-06T00:06:00Z":{"CpuUsage":"0.6"},"2021-10-06T00:07:00Z":{"CpuUsage":"0.65"},"2021-10-06T00:08:00Z":{"CpuUsage":"0.72"},"2021-10-06T00:09:00Z":{"CpuUsage":"0.57"},"2021-10-06T00:10:00Z":{"CpuUsage":"0.87"},"2021-10-06T00:11:00Z":{"CpuUsage":"0.67"},"2021-10-06T00:12:00Z":{"CpuUsage":"0.78"},"2021-10-06T00:13:00Z":{"CpuUsage":"0.72"},"2021-10-06T00:14:00Z":{"CpuUsage":"0.73"},"2021-10-06T00:15:00Z":{"CpuUsage":"0.92"},"2021-10-06T00:16:00Z":{"CpuUsage":"1.0"},"2021-10-06T00:17:00Z":{"CpuUsage":"1.23"},"2021-10-06T00:18:00Z":{"CpuUsage":"0.93"},"2021-10-06T00:19:00Z":{"CpuUsage":"0.98"},"2021-10-06T00:20:00Z":{"CpuUsage":"0.87"},"2021-10-06T00:21:00Z":{"CpuUsage":"0.95"},"2021-10-06T00:22:00Z":{"CpuUsage":"1.18"},"2021-10-06T00:23:00Z":{"CpuUsage":"1.08"},"2021-10-06T00:24:00Z":{"CpuUsage":"1.15"},"2021-10-06T00:25:00Z":{"CpuUsage":"1.37"},"2021-10-06T00:26:00Z":{"CpuUsage":"1.72"},"2021-10-06T00:27:00Z":{"CpuUsage":"1.6"},"2021-10-06T00:28:00Z":{"CpuUsage":"1.47"}}"
}

我想要的结果是CpuUsage值的集合,如0.45 0.73 0.6...

使用max_by根据特定路径查找最大值

如果您想保留时间戳,使用to_entries将对象转换为key/value对并找到最大值:

jq '.MonitorHistory | fromjson | to_entries | max_by(.value.CpuUsage | tonumber) | {(.key):.value}'

否则,如果您只需要最高的数字

jq '[.MonitorHistory | fromjson[].CpuUsage | tonumber] | max'

您需要首先解析MonitorHistoryjson字符串以将其转换为可操作的形式。然后利用在jq中枚举的json对象是按字母顺序排列的这一事实(因为它们看起来是ISO时间戳)。只需从每个条目中提取值。因为它都是单个属性对象,所以直接输出值。

.MonitorHistory | fromjson[][] | tonumber

jqplay

最新更新