вот альтернативное решение, основанное на jtc
утилита unix:
Если я правильно понял ваш вопрос, вы хотите сопоставить datatype== somedatatype1
, а если совпадет, то обновите верхний name
с братом name
datatype
?
если так, то решение на основе jtc
выглядит так:
bash $ <file.json jtc -w'[name]' -u'[datatype]:<somedatatype1>[-1][name]'
{
"id": [
"abcdef"
],
"input_dataobjects": [
{
"datatype": "somedatatype1",
"id": "someid1",
"name": "somename1",
"provider": "someprovider"
},
{
"datatype": "some_datatype2",
"id": "some_id2",
"name": "some_name2"
}
],
"name": "somename1"
}
bash $
Если вам просто нравится обновлять / изменять одноуровневую name
записи, тогда запустите так:
bash $ <file.json jtc -w'[datatype]:<somedatatype1>[-1][name]' -u'"sonemewname1"'
{
"id": [
"abcdef"
],
"input_dataobjects": [
{
"datatype": "somedatatype1",
"id": "someid1",
"name": "sonemewname1",
"provider": "someprovider"
},
{
"datatype": "some_datatype2",
"id": "some_id2",
"name": "some_name2"
}
],
"name": "name"
}
bash $
вот jtc
полное руководство пользователя