Я использую jq для изменения файла json, но у меня проблемы с вложенными объектами. Мне нужно найти объект внутри массива объектов, а затем изменить вложенный объект внутри этого объекта. Я могу найти правильный объект и изменить пару ключ / значение внутри этого объекта, но изменение пары ключ / значение внутри вложенного объекта вызывает у меня проблемы. Я уверен, что есть способ сделать это с помощью jq, но я не могу его найти. В этом примере я пытаюсь изменить значение pos_color для дорожки с меткой AX11S1.bw.
# find correct object and change key/value command ( this will change the min_score from 0 to 200 )
jq '.tracks |= map(if .label=="AX11S1.bw" then . + {"min_score":"200"} else . end)' trackList.json
# Example JSON
{
"tracks": [
{
"style": {
"clip_marker_color": "red",
"neg_color": "#005EFF",
"pos_color": "blue",
"height": 100
},
"variance_band": true,
"max_score": 100,
"label": "AX11S1.bw",
"min_score": 0
},
{
"style": {
"clip_marker_color": "red",
"neg_color": "#005EFF",
"pos_color": "blue",
"height": 100
},
"variance_band": true,
"max_score": 100,
"label": "AX11S2.bw",
"min_score": 0
},
{
"style": {
"clip_marker_color": "red",
"neg_color": "#005EFF",
"pos_color": "blue",
"height": 100
},
"variance_band": true,
"max_score": 100,
"label": "AX11S3.bw",
"min_score": 0
}
]
}