Ограничить глубину вывода jq

Я не нашел репозиториев, предлагающих последнюю версию на момент написания этой статьи (8.6.5 )vips. Однако я нашел этот пост в блоге, в котором очень хорошо описаны шаги по созданию собственного пакета DEB.

Общие шаги

ПРИМЕЧАНИЕ.:См. выше, некоторые биты могут не рассматриваться ниже. Ниже показаныобщиешаги для выполнения того, что вы просите, учитывая, что нет официального репозитория, который их предоставляет.

настроить сборку env и загрузить vips
$ apt install build-essential devscripts

$ curl -LO https://github.com/jcupitt/libvips/releases/download/v8.6.5/vips-8.6.5.tar.gz
$ tar zxvf 
$ cd 
$ curl -LO http://cdn-fastly.deb.debian.org/debian/pool/main/v/vips/vips_8.6.5.orig.tar.gz
$ tar zxvf 
установить зависимости
$ mk-build-deps
$ sudo apt install./vips-build-deps_*.deb
сборка
$ debuild -i -us -uc -b

Результаты

$ sudo apt install *.deb

5
29.07.2020, 11:40
1 ответ

Сочетание функции delс итератором значений массива/объекта .[]?для удаления любого ключа/значения, вложенного на четвертом уровне, кажется, дает результат, который вы ищете:

$ jq 'del(.[]?[]?[]?[]?)' <<'EOT'
[
    { "a": { "b": { "c": { "d": { "e": "foo"}}}}},
    { "f": [ { "g": "foo"}]},
    [ "h", "i", "j" ]
]
EOT
[
  {
    "a": {
      "b": {}
    }
  },
  {
    "f": [
      {}
    ]
  },
  [
    "h",
    "i",
    "j"
  ]
]

Версия .[]?фильтра итератора .[]необходима, чтобы jqне выдавал жалобу при попытке выполнить итерацию по элементу, который не является массивом или объектом.

Честно говоря, я не смог найти прямого упоминания о фильтре итератора массива/объекта в форме, показанной выше (практически:.[][])нигде в документации. Менее краткая, но четко документированная версия будет:

$ jq 'del(.[]? |.[]? |.[]? |.[]?)'...
10
18.03.2021, 23:16

Теги

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