Исключить пустые входные данные при объединении файлов JSON
Я хочу объединить несколько файлов JSON в каталоге, используя jq. Большинство файлов JSON выглядят так
[
{
a: 12,
b: 22,
c: []
}
]
Поэтому для их объединения я использую следующий запрос jq
jq -s '[.[]|.[ ]]' *.json > xyz.json
Кажется, это работает нормально, и я получаю ожидаемый конкатенированный вывод, пока он не встретит файл JSON, в котором просто записано значение null, и когда я пытаюсь объединить это с другими, я получаю сообщение об ошибке.
$ cat test.json
null
$ jq -s '[.[]|.[ ]]' xyz.json test.json > y.json
jq: error (at test.json:0): Cannot iterate over null (null)
Есть ли способ исключить этот нулевой файл JSON при объединении через каталог?
Я должен упомянуть, что эти файлы JSON генерируются как выходные данные для различных сканирований Trivy Image , и я не могу контролировать их вывод.
Если кто-то еще сталкивался с этой проблемой ранее, пожалуйста, помогите мне.
1 ответ
Просто выберите входы массива.
jq -n '[inputs | arrays[]]' *.json
Использовать
select(. != null)
вместо
arrays
если вы не хотите исключать все не-массивы, а только
null
.