Выбор нескольких значений из разных вложенных объектов с помощью jq

#json #jq #export-to-csv #aws-cli

#json #jq #экспорт в csv #aws-cli

Вопрос:

Я работаю с интерфейсом командной строки AWS и хотел бы иметь возможность запрашивать экземпляры, чтобы узнать их имя и состояние. Пример:

 instance 1, running instance 2, stopped  

Я могу получить имя и состояние экземпляра с помощью этого запроса

aws ec2 describe-instances --output json --filters Name=tag:Name,Values=*"instance "* --query "Reservations[].Instances[]" | jq ".[] | .Tags, .State.Name"

Однако это дает мне массив объектов и одно значение.

 [  {  "Key": "Name",  "Value": "instance 1"  },  {  "Key": "VPC",  "Value": "the vpc"  },  {  "Key": "ami_backup",  "Value": "false"  },  ... ] "running"  

Почти на месте. Как я могу объединить значение каждого объекта со строкой состояния, чтобы затем отфильтровать объект, чтобы получить только тот, где Key==Name он находится ?

Я попытался использовать map , но не смог придумать правильный синтаксис.

Ответ №1:

Считать:

 .[] | (.Tags[] | select(.Key=="Name").Value)   ", "   .State.Name