Этот вопрос вызван из-за кочевого поведения
У меня есть такой json:
# cat test.json
{
"Name": "test",
"TaskGroups": [
{
"Name": "test1",
"Count": 1
},
{
"Name": "test2",
"Count": 1
},
{
"Name": "test3",
"Count": 1
},
{
"Name": "test4",
"Count": 1
},
{
"Name": "test5",
"Count": 1
}
]
}
Мне нужно изменить это так:
1) добавь "Job" перед моим json - я могу сделать это с
# cat test.json | jq '{"Job": .}'
2) заменить переменную «Count» для нескольких элементов в массиве, например test1 и test5, я могу сделать это так:
# cat test.json | jq ' .TaskGroups[0,4].Count = 0 '
Я могу запустить обе команды как единое целое, и все работает нормально так:
# cat test.json | jq ' .TaskGroups[0,4].Count = 0 | {"Job": .} '
Но я также хочу искать переменные, которые я хочу изменить, по их именам, а не по их количеству в массиве. Так что я могу сделать что-то вроде этого:
cat test.json | jq ' .TaskGroups[] | select(.Name == ("test1", "test5")).Count = 0 '
Но из-за того, что я перечисляю массив, а не весь json - я теряю некоторые переменные и "Job:", которые я только что добавил. Или я могу добавить его к каждому элементу в моем массиве.
Так как же я могу изменить переменную по ее имени и одновременно добавить «Job:»?