Как объединить JSON записей из нескольких файлов, используя jq - PullRequest
2 голосов
/ 17 марта 2020

У меня есть список имен файлов в виде переменных оболочки и их содержимое, как показано ниже

file_names=('one.json' 'two.json')

one. json:

{
      "key":"k1",
      "host": "..",
      "name": ".."    
}

two. json:

{
      "key":"k2",
      "host": "..",
      "name": ".."
}

Я хочу создать консолидированный файл со всем содержимым из вышеуказанных файлов. Там может быть более 2 файлов. В файле консолидации значение key станет ключом внешнего уровня записи JSON. Например:

{
    "k1": {
      "host": "..",
      "name": ".."   
    },
    "k2": {
      "host": "..",
      "name": ".."   
    }
}

Как мне добиться этого с помощью jq?

1 Ответ

2 голосов
/ 17 марта 2020

Использование INDEX:

jq -n 'INDEX(inputs; .key) | map_values(del(.key))' "${file_names[@]}"
...