Я хочу использовать jq для удаления всех объектов с заданным именем из всех массивов во входных данных. Например, удаление «Name1» из этого:
{
"Category1": [
{
"name": "Name1",
"desc": "Desc1"
},
{
"name": "Name2",
"desc": "Desc2"
}
],
"Category2": [
{
"name": "Name1",
"desc": "Desc1"
},
{
"name": "Name3",
"desc": "Desc3"
}
],
"Category3": [
{
"name": "Name4",
"desc": "Desc4"
}
]
}
Должно получиться это:
{
"Category1": [
{
"name": "Name2",
"desc": "Desc2"
}
],
"Category2": [
{
"name": "Name3",
"desc": "Desc3"
}
],
"Category3": [
{
"name": "Name4",
"desc": "Desc4"
}
]
}
Я мало работал с jq или JSON, и после нескольких часов гугления и экспериментов я не смог понять это. Как бы я это сделал?
Самое близкое, что мне удалось, было это:
cat input | jq 'keys[] as $k | .[$k] |= map( select( .name != "Name1"))'
Это фильтрует каждый из массивов, но возвращает результат в виде трех отдельных объектов, а это не то, что мне нужно.