Форматирование Json в таблицу с использованием сценария оболочки

Вы столкнулись с чем-то, что происходит перед каждым выпуском OpenBSD. OpenBSD разрабатывается «единым путем»:исходное дерево помечено как 6.4, выпущен релиз, разработка продолжается около 6 месяцев и доступна в виде моментальных снимков, пока разработчики не обнаружат, что что-то изменилось и достаточно стабильны, чтобы гарантировать новый выпуск, после чего дерево помечается как 6.5 и так далее.

Это означает, что в течение короткого периода времени (, то есть за несколько дней до нового выпуска ), ядро ​​помечается как «6.5» вместо «snapshot». Когда вы используете pkg_add, он будет искать пакеты для ядра, которое вы используете, он будет искать пакеты «6.5», которые будут доступны только позже, поэтому no such directory. Как ответил Руфо, добавление -D snapк pkg_addрешит (временную )проблему, заставив pkg_addискать "моментальные" пакеты даже с "релизным" ядром. Изman pkg_add:

snap
  Force ‘%c’ and ‘%m’ to expand to ‘snapshots’, even on a release kernel

Очевидно, что это не идеально, но это время -проверено, и это то, что лучше работает для разработчиков OpenBSD (см. презентацию, указанную выше, чтобы узнать больше о разработке релизов OpenBSD ). Добавление -D snapза несколько дней до релизов раз в два месяца — небольшая цена за использование снапшотов.

-3
23.04.2021, 14:25
1 ответ

Учитывая документ JSON, который в настоящее время находится в вопросе, следующая команда jqпреобразует его в форму CSV, соответствующую формату таблицы, который вы показываете, включая заголовок таблицы:

jq -r '["Status","Value","Result"],
    (.result.difs[] | [.type,.entity,.result]) | @csv' file.json

Сначала создается массив значений для каждой строки, которую нужно преобразовать в CSV, а затем используется встроенный оператор -in @csvдля создания данных CSV с правильными кавычками.

Результатом для примера документа JSON будет

"Status","Value","Result"
"In Progress","Phone","added"
"Completed","SMS","added"
"Scheduled","Web","added"

Позже это можно будет импортировать в любую программу для работы с электронными таблицами, которую вы хотите использовать для создания таблицы.

Обработав -это с помощью cvslookиз csvkitнабора инструментов командной строки для анализа CSV, вы можете получить уцененный вариант таблицы:

jq -r '["Status","Value","Result"],
    (.result.difs[] | [.type,.entity,.result]) | @csv' file.json |
csvlook

Это выведет

| Status      | Value | Result |
| ----------- | ----- | ------ |
| In Progress | Phone | added  |
| Completed   | SMS   | added  |
| Scheduled   | Web   | added  |

, который при рендеринге как уценка будет выглядеть как

Статус Значение Результат
Выполняется Телефон добавлено
Завершено СМС добавлено
Запланировано Интернет добавлено
3
28.04.2021, 22:51

Теги

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