Использование jq для получения структурированного вывода

Это два разных вычисления из «M» (мегабайты или мебибайты)

Префикс SI «мега» означает 10 ^ 6, что похоже на то, что использует Finder. Фактический размер файла вашего примера составляет около 360 400 000 байт.

Однако в вычислениях также часто используется двоичный префикс «mebi», который равен 2 ^ 20 (1048576).Если вы возьмете 360 400 000 и разделите на 2 ^ 20, вы получите 343,7, что округляется до 344M, которое вы видите в терминале.

Ни один из префиксов не является «правильным» (хотя некоторые утверждают обратное), и, к сожалению, некоторые программы используют неоднозначный суффикс «M» вместо «MB» или «MiB». Некоторые программы позволяют использовать любой префикс.

Ваш пример QuickTime все еще отличается. В столбце указано «Размер данных», что не совпадает с размером файла, поскольку в ваших медиафайлах содержится дополнительная служебная информация.

1
26.11.2018, 00:55
2 ответа

Solución completajq:

jq '[ group_by(.Category)[0] |.[0].Category as $k 
      | { ($k): (reduce.[] as $o 
                    ({};.[($o.Filesystem)] = ($o | del($o.Category, $o.Filesystem)))
                ) 
        } 
    ]' input.json

En caso de que la tecla "Filesystem"sea un número -, cambie .[($o.Filesystem)]a la siguiente.[($o.Filesystem | tostring)]


La salida:

[
  {
    "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"
      }
    }
  }
]
1
27.01.2020, 23:32

Вы оказываете себе медвежью услугу, перестраивая JSON таким образом.

Исходный JSON выглядит нормально.

При этом, если вы хотите получить все размеры для udevфайловых систем, вы должны

jq '.[] | select(.Filesystem == "udev").Size' file.json 

Простая операция, подобная этой, над реорганизованным файлом будет

jq '.[] |."Disk Partition Details".udev.Size' file1.json

Кроме того, переупорядоченный файл поддерживает только одну точку монтирования для каждого типа файловой системы, насколько я понимаю. Если бы у вас было несколько tmpfsфайловых систем, то я не знаю, куда бы вы их поместили.

1
27.01.2020, 23:32

Теги

Похожие вопросы