Como analisar dados json usando jq?

0

Eu preciso buscar abaixo os objetos do json que estou recebendo via API. Eu estou tentando com jq que está disponível no Ubuntu 16.04. Estou tentando obter dados neste formato device_name C:| free 18707755008.0 total_size 55832473600.0

Qualquer sugestão de como devo abordar isso? O objetivo é obter acima de 3 objetos no excel.

{
    "logical": {
        "D:|": {
            "device_name": [
                "D:\"
            ],
            "used_percent": [
                52.6,
                "%"
            ],
            "fstype": "NTFS",
            "free": [
                10178084864.0,
                "B"
            ],
            "total_size": [
                21471686656.0,
                "B"
            ],
            "used": [
                11293601792.0,
                "B"
            ],
            "opts": "rw,fixed"
        },
        "C:|": {
            "device_name": [
                "C:\"
            ],
            "used_percent": [
                66.5,
                "%"
            ],
            "fstype": "NTFS",
            "free": [
                18707755008.0,
                "B"
            ],
            "total_size": [
                55832473600.0,
                "B"
            ],
            "used": [
                37124718592.0,
                "B"
            ],
            "opts": "rw,fixed"
        }
    }
}
    
por user138530 13.10.2018 / 16:11

2 respostas

2

As seguintes saídas 2 linhas com um formato de seqüência de caracteres visto na última linha você pode alterar facilmente:

jq -M -r '.[] | keys[] as $var |
 [.[$var].free[0], .[$var].total_size[0]] as [$f,$t] |
 "device_name \($var) free \($f) total_size \($t)" '

saída:

device_name C:| free 18707755008 total_size 55832473600
device_name D:| free 10178084864 total_size 21471686656
    
por 13.10.2018 / 17:26
0

Use isto:

jq '.logical["D:|"].free[0], .logical["D:|"].total_size[0]' file.json

Saída:

10178084864
21471686656
    
por 13.10.2018 / 16:46

Tags