Все примеры, которые я видел до сих пор, «сокращают» вывод (отфильтровывают) какую-то часть. Я понимаю, как работать с той частью ввода, которую я хочу, но я не понял, как вывести остальную часть контента «нетронутой».
Конкретным примером может быть входной файл с несколькими записями высокого уровня, скажем, «массив1», «поле1», «массив2», «массив3». Содержимое каждого массива отличается. Конкретная обработка, которую я хочу сделать, - это отсортировать записи "array1" по полю "имя", которое выполнимо:
jq '.array1 | sort_by(.name)' test.json
но я также хочу сохранить этот вывод как «массив1», а также все остальные данные.
Пример ввода:
{
"field1": "value1",
"array1":
[
{ "name": "B", "otherdata": "Bstuff" },
{ "name": "A", "otherdata": "Astuff" }
],
"array2" :
[
array2 stuff
],
"array3" :
[
array3 stuff
]
}
Ожидаемый результат:
{
"field1": "value1",
"array1":
[
{ "name": "A", "otherdata": "Astuff" },
{ "name": "B", "otherdata": "Bstuff" }
],
"array2" :
[
array2 stuff
],
"array3" :
[
array3 stuff
]
}
Я пытался использовать карту, но я не могу понять правильный синтаксис, чтобы иметь возможность обрабатывать любой тип ввода, кроме массива, который я хочу отсортировать по имени.