Использование jq для создания другого объекта json с этой строкой - PullRequest
0 голосов
/ 12 марта 2020

В настоящее время я использую упаковщик для копирования AWS AMI в несколько регионов, а затем выкладываю идентификаторы AMI с помощью постпроцессора упаковщика: https://packer.io/docs/post-processors/manifest.html.

Вот пример вывод:

{
  "name": "amazon-ebs",
  "builder_type": "amazon-ebs",
  "build_time": 1584037532,
  "files": null,
  "artifact_id": "ca-central-1:ami-02420*,us-east-1:ami-06a4*,us-west-1:ami-078cf*",
  "packer_run_uuid": "",
  "custom_data": null
}

Я хотел бы использовать jq, чтобы иметь возможность построить новый json в следующем формате:

{
  "ca-central": "ami_id",
  "us-east-1": "ami_id",
  "us-west-1": "ami_id"
}

Кто-нибудь сможет мне помочь с команда jq для этого?

1 Ответ

2 голосов
/ 12 марта 2020

С вашим вводом следующая программа jq:

.artifact_id
| [ split(",")[] 
    | (split(":") | {(.[0]): .[1] } ) ]
| add    

производит:

{
  "ca-central-1": "ami-02420*",
  "us-east-1": "ami-06a4*",
  "us-west-1": "ami-078cf*"
}
...