Если я правильно понял ваш вопрос, вы просто хотите вывести массив, содержащий объект в каждом файле. В этом случае -s
уже сделает это за вас, так что вам просто нужно
jq -s. file1 file2
Если вам нужны дополнительные преобразования, отредактируйте вопрос и дайте краткое описание того, что вам нужно. (Я не сравнивал строку ожидаемого результата -по строке -с фактическим результатом ).
Редактировать
Я все еще не совсем уверен в общем характере необходимого вам преобразования, но если формат точно такой же, как в примере, и все, что вы хотите, это заменить поле values
в первом файле содержимым поле values
во втором файле, а все остальное оставьте, попробуйте
jq -s '.[0][1].criteria[0].options.values=.[1].criteria[0].options.values' file1 file2
Здесь -s
возвращает файлы в виде массива, поэтому .[0]
— это первый файл, а .[1]
— второй файл. Затем он просто выбирает статические пути и в первую очередь обновляет одно соответствующее поле.
Если порядок или количество ваших объектов является переменным или если замена должна происходить только для совпадающих объектов и т. д., обновите вопрос.