Получить родительские узлы с помощью селектора дочерних узлов с помощью jq

Технически вы можете добиться этого. Хотя у ядра нет встроенного пользовательского интерфейса.

Вам нужно выполнить следующие шаги:

1. Create a initramfs with static busybox and nothing else.
This initramfs will have few necessary directories: like proc, sys, tmp, bin, usr, etc

2. Write a "/init" script, whose main job will be:
   a. mount the procfs,tmpfs and sysfs.
   b. Call busybox's udev i.e. mdev
   c. Install the busybox command onto virtual system by executing busybox install -s
   d. Calling /bin/sh

3. Source the initramfs directory while compiling the kernel. You can do so by flag: CONFIG_INITRAMFS_SOURCE

4. Compile your kernel.

5. Boot off this kernel and you will get the shell prompt with minimal things.

Хотя, я пишу вышеприведенные заметки очень формально. Вы можете доработать их так, как вам хочется.

UPDATE:

Перейдите по этой ссылке для получения некоторых рекомендаций.

0
08.05.2019, 18:17
2 ответа

если вы готовы рассмотреть альтернативы, то вот одна из них, основанная на утилите walk -path unixjtc:

bash $ <file.json jtc -w'[type]:<text>:[-1]' -l
"fullDescription": {
   "type": "text"
}
"shortDescription": {
   "type": "text"
}
bash $ 

Прогулка -путь(-w)здесь довольно простой:

  • [type]:<text>:-рекурсивно найдет каждый (все )из "type": "text", затем из найденных записей
  • [-1]-создаст резервную копию на 1 уровень (вверх по дереву Json ), фактически выбрав его родителя

-lдает указание напечатать метку для пройденной записи

PS> Раскрытие информации :Я создатель инструмента jtc

0
28.01.2020, 03:42

Проблема с

.xxx.mappings[].properties | select(.[].type=="text")

заключается в том, что selectбудет выбирать весь propertiesобъект (, а не массив )столько раз, сколько в нем есть подчиненных -объектов, которые имеют .type == "text".

Вы можете использовать with_entriesздесь:

jq '.xxx.mappings[].properties | with_entries(select(.value.type == "text"))' file

Это повторяется с with_entriesпо свойствам. selectполучает такой массив элементов:

{
  "key": "clientName",
  "value": {
    "type": "keyword"
  }
}

selectвыбирает элементы с помощью .value.type == "text", а затем превращает их обратно в обычные объекты.

Вывод будет

{
  "fullDescription": {
    "type": "text"
  },
  "shortDescription": {
    "type": "text"
  }
}

Обратите внимание, что документы JSON не могут содержать «голые» ключи (ключи, не являющиеся частью объекта ), поэтому точный формат вывода, который вы запрашиваете, не является допустимым JSON.

1
28.06.2021, 10:04

Теги

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