2016-07-18 5 views
1

У меня есть JSonJson файл редактирования через JQ

{ 
    "file1": [{ 
     "username": "myname", 
     "groupname": "mypassword", 
     "environment": [{ 
      "name": "UMASK", 
      "value": "022" 
     }, 
     { 
      "name": "DEBUG", 
      "value": "2" 
     }] 
    }] 
} 

и хотите изменить значение DEBUG до 5.

опробованы ниже команды

JQ .file1 [0]. среда sandeep.json | JQ '([] |. выберите (.name == "DEBUG") | .value) | = "5"'

это вернет мне определенную часть JSON как

[ 
    { 
    "name": "UMASK", 
    "value": "022" 
    }, 
    { 
    "name": "DEBUG", 
    "value": "5" 
    } 
] 

, но я хочу, чтобы увидеть полный JSON с измененным значением

{ 
    "file1": [{ 
     "username": "myname", 
     "groupname": "mypassword", 
     "environment": [{ 
      "name": "UMASK", 
      "value": "022" 
     }, 
     { 
      "name": "DEBUG", 
      "value": "5" 
     }] 
    }] 
} 

Пожалуйста, предложите мне

ответ

1

Оно должно быть:

jq '(.file1[].environment[]|select(.name=="DEBUG").value) |= 5' file.json 

Выход:

{ 
    "file1": [ 
    { 
     "username": "myname", 
     "groupname": "mypassword", 
     "environment": [ 
     { 
      "name": "UMASK", 
      "value": "022" 
     }, 
     { 
      "name": "DEBUG", 
      "value": 5 
     } 
     ] 
    } 
    ] 
} 
+0

Спасибо за исправление. Это работает. –

+0

Добро пожаловать – hek2mgl

Смежные вопросы