используйте jq для замены значения параметра формирования облаков - PullRequest
0 голосов
/ 28 ноября 2018

Я пытаюсь заменить проект ParameterKey: Project на ParameterValue: тест в приведенном ниже файле параметров облачной информации

    [{
  "ParameterKey": "Project",
  "ParameterValue": "<changeMe>"
 }, 
 {
  "ParameterKey": "DockerInstanceType",
  "ParameterValue": "m3.medium"
}]

Я пытаюсь выполнить команду ниже jq

cat config.json |              
  jq "map(if .ParameterKey == "Project"
          then . + {\"ParameterValue\":\"test\"}
          else .
          end)" > populated_config.json

Яполучая ошибку ниже

jq: error: Project/0 is not defined at <top-level>, line 1:
map(if .ParameterKey == Project                        
jq: 1 compile error

1 Ответ

0 голосов
/ 28 ноября 2018

Вы преждевременно закрываете строку, переданную в jq, не экранируя кавычки для "Project" в равенстве.

Вы можете упростить, заключив выражение в одинарные кавычки, и экранирование не требуется:

$ cat config.json | jq 'map(if .ParameterKey == "Project" then . + {"ParameterValue":"test"} else . end)'
[
  {
    "ParameterKey": "Project",
    "ParameterValue": "test"
  },
  {
    "ParameterKey": "DockerInstanceType",
    "ParameterValue": "m3.medium"
  }
]
...