如何在jq中发起请求

How to make request in jq

我正在尝试在 jq 中提出请求:

cat testfile.txt | jq 'fromjson | select(.kubernetes.pod.memory.usage.bytes != null) .kubernetes.pod.memory.usage.bytes, ."@timestamp"'

我的输出是:

"2019-03-15T00:24:21.733Z"
"2019-03-15T00:25:10.169Z"
"2019-03-15T00:24:47.908Z"
105889792
"2019-03-15T00:25:04.446Z"
34557952
"2019-03-15T00:25:04.787Z"

如何删除多余的日期? 例如仅输出:

105889792
"2019-03-15T00:25:04.446Z"
34557952
"2019-03-15T00:25:04.787Z"

你只需要在 select 之后添加一个管道 :

cat testfile.txt | jq 'fromjson | select(.kubernetes.pod.memory.usage.bytes != null) | .kubernetes.pod.memory.usage.bytes, ."@timestamp"'

这是一个 DRYer(如 )解决方案:

.["@timestamp"] as $ts | .kubernetes.pod.memory.usage.bytes // empty | ., $ts

请注意,// 的这种特殊用法假定您希望以相同的方式处理 nullfalse 和丢失的密钥。如果没有,您仍然可以使用相同的想法来保持 DRY。