У меня есть массив JSON объектов, и я пытаюсь изменить name
и version
для объекта данного @type
со следующим вводом
[
{
"name": "oldname",
"version": "oldversion",
"@type": "Project"
},
{
"name": "bomname",
"version": "bomversion",
"@type": "BOM"
},
{
"name": "componentname",
"version": "componentversion",
"@type": "Component"
}
]
I нашел много примеров для изменения одного значения, и я могу успешно сделать это, объединив несколько операторов select
.
$ cat original.json | jq '[ .[] | (select(.["@type"] == "Project") | .name ) = "newname" | (select(.["@type"] == "Project") | .version ) = "newversion ] ' > renamed.json
Но я надеялся, что смогу сжать это, поэтому мне нужно выполнить select
только один раз, чтобы изменить оба значения.