У меня есть файл JSON, в котором мне нужно обновить определенное значение.
{
"Comment": "comment",
"test": {
"enabled": true
},
"enabled": true,
"otherStuff": blah,
"otherStuff2": blah,
"otherStuff3": blah,
}
Я бы хотел изменить значение второго «включено» на false. С помощью JQ Parser я могу легко получить его с помощью jq '.enabled', но я не уверен, как лучше всего манипулировать JSON.
JSON - это ответ, который я получаю от API, и он может измениться в будущем, я не могу полагаться на строку или значение до / после.
быстрый эксперимент:
$ echo '{
"Comment": "comment",
"test": {
"enabled": true
},
"enabled": true,
"otherStuff": "blah",
"otherStuff2": "blah",
"otherStuff3": "blah"
}' |
jq '.enabled=false'
{
"otherStuff3": "blah",
"otherStuff2": "blah",
"otherStuff": "blah",
"enabled": false,
"test": {
"enabled": true
},
"Comment": "comment"
}
Я читаю вопрос как «в скорлупе» и не обязательно как "используя только встроенные команды bash".
Пытаться jsawk, который позволяет манипулировать и поддерживает скрипты, хотя полагается на js как на зависимость.
Если все, что вы хотите сделать, это прочитать (уникальный) ключ из ответа JSON, вы можете (адаптировано из Брендан ОКоннор):
curl <destination> | grep -Po '"keyname":.*?[^\\]",'`