добавление json объектов из одного файла в другой в одном массиве с помощью jq - PullRequest
0 голосов
/ 18 января 2020

Я новичок здесь, поэтому извините, если я делаю какие-либо ошибки при задании вопроса.

У меня есть файл json, который обновляется каждую минуту (File_1. json) с json объектами. Все, что я хочу сделать, это скопировать эти объекты в другой файл в одном массиве с помощью команды jq.

Образцы файлов File_1. json:

        {
          "Id":"1",
          "Name":"Kiran",
          "Age":"12"
        }
        {
          "Id":"2",
          "Name":"Dileep",
          "Age":"22"
        }

Ожидаемый вывод

     [ 
       {
          "Id":"1",
          "Name":"Kiran",
          "Age":"12"
        }
        {
          "Id":"2",
          "Name":"Dileep",
          "Age":"22"
        }
       ]

Я пробовал использовать -s (slurp), но так как код будет работает один раз в минуту, создавая несколько массивов.

1 Ответ

0 голосов
/ 18 января 2020

Если вы хотите просто добавить объекты в File_1. json к существующему массиву в (скажем) выводе. json, вы можете написать:

jq  '. + [inputs]' output.json File_1.json

Это предполагает вывод. json содержит ровно один массив (или JSON значение null). Для начала вы можете инициализировать вывод. json, выполнив:

echo null > output.json

Если вы хотите рискнуть и перезаписать вывод. json, вы можете использовать sponge :

jq  '. + [inputs]' output.json File_1.json | sponge output.json

Если вы хотите удалить дубликаты и не возражаете против сортировки объектов, вы можете просто добавить | unique к указанному выше фильтру jq. Если важно сохранить порядок, см. https://github.com/stedolan/jq/wiki/Cookbook#using -сумка для реализации-сортировки-бесплатная-версия-уникальности

...