Preciso converter uma string JSON usando jq, conforme mostrado abaixo, em um formato de tabela para exibir a saída no terminal.
{
"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=="
}
]
]
}
O que eu quero exibir no terminal é o seguinte:
@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
Alguém pode me guiar na direção certa?
Talvez:
Sem
--barred
, fica assim:Você também pode canalizar a saída desse
jq
comando paravd -f json
( VisiData ) em vez demlr
( Miller ) para obter um visualizador de tabela interativo.Esses usam
jq
para extrair as informações emlr
apenas para formatar a tabela. Há alguma sobreposição entre o conjunto de recursos dejq
e o demlr
. Por exemplo, você também pode remover a@ptr
coluna commlr
'scut
:Esse
jq
comando, dividido e comentado:O resultado não é JSON, mas vários JSONs concatenados juntos, mas ambos
jq
suportammlr
isso. Com-c
(compacto), isso é NDJSON (JSON delimitado por nova linha), onde temos um JSON por linha, também suportado porvd
. Para obter o JSON adequado, precisaríamos:Onde usamos
map
no.results
array para que resulte em outro array JSON em vez de iterar sobre os elementos. Portanto, o resultado final é um grande array. Isso também é suportado porjq
(obviamente porque é JSON adequado)mlr
evd
, é um pouco mais longo para digitar e significa que essas ferramentas precisam ler até o fechamento]
no final antes de terem algo para mastigar. Na prática, não verifiquei se isso fazia alguma diferença em termos de desempenho.Ainda outra:
Notas:
from_entries
converterá uma matriz de pares chave-valor em um objeto.xsv table
é apenas para impressão bonita, você pode removê-lo.Acho que encontrei a resposta:
Outra tomada que usa
jq
para emitir valores separados por tabulações ecolumn
embelezá-lo