Eu tenho o seguinte json como minha entrada para processamento jq
[
{
"Category": "Disk Partition Details",
"Filesystem": "udev",
"Size": "3.9G",
"Used": 0,
"Avail": "3.9G",
"Use%": "0%",
"Mounted": "/dev"
},
{
"Category": "Disk Partition Details",
"Filesystem": "tmpfs",
"Size": "799M",
"Used": "34M",
"Avail": "766M",
"Use%": "5%",
"Mounted": "/run"
}
]
usando ./csvtojson.sh bb.csv | jq 'map( {(.Category): del(.Category)})'
como sugerido por @peak aqui , cheguei até o json abaixo
[
{
"Disk Partition Details": {
"Filesystem": "udev",
"Size": "3.9G",
"Used": 0,
"Avail": "3.9G",
"Use%": "0%",
"Mounted": "/dev"
}
},
{
"Disk Partition Details": {
"Filesystem": "tmpfs",
"Size": "799M",
"Used": "34M",
"Avail": "766M",
"Use%": "5%",
"Mounted": "/run"
}
}
]
Tudo o que eu quero é colocar a categoria no topo apenas uma vez e quebrar esse json para outro nível, como fiz na etapa anterior como esta.
[
{
"Disk Partition Details": {
"udev" :{
"Size": "3.9G",
"Used": 0,
"Avail": "3.9G",
"Use%": "0%",
"Mounted": "/dev"
},
"tmpfs" : {
"Size": "799M",
"Used": "34M",
"Avail": "766M",
"Use%": "5%",
"Mounted": "/run"
}
}
}
]
Solução completa
jq
:Caso
"Filesystem"
a chave possa ser um número - mude.[($o.Filesystem)]
para o seguinte.[($o.Filesystem | tostring)]
A saída:
Você está prestando um péssimo serviço a si mesmo ao reorganizar seu JSON dessa maneira.
O JSON original parece bom para mim.
Com isso, se você quiser obter todos os tamanhos para sistemas de
udev
arquivos, façaUma operação simples como essa no arquivo reorganizado seria
Além disso, o arquivo reorganizado suporta apenas um ponto de montagem por tipo de sistema de arquivos, até onde posso ver. Se você tivesse vários
tmpfs
sistemas de arquivos, não sei onde os colocaria.