AWS CLI — результат использования запроса jmespath

У меня проблема, так что вы спасете мою жизнь :-)

когда я запускаю следующую команду из aws-shell

cloudformation describe-stacks --query Stacks[*].[StackName,StackId,CreationTime,LastUpdatedTime,Parameters[?ParameterKey==\`PARAM_NAME1\`].ParameterValue,Parameters[?ParameterKey==\`PARAM_NAME2\`].ParameterValue] --output text

результат разбивается на 3 строки:

Automation-X arn:aws:cloudformation:X X Нет
PARAM_VALUE1
PARAM_VALUE2

но моя цель - иметь только одну строку (вот так)

автоматизация-X arn:aws:cloudformation:X X Нет PARAM_VALUE1 PARAM_VALUE2

то есть наличие PARAM_VALUE1 и PARAM_VALUE2 в первой и единственной строке.

Может кто-нибудь мне помочь?

Я ценю это, спасибо заранее

Забыл указать, что результатом команды является много строк (более 1000) и каждая строка состоит из 6 параметров


person Angelo Pisaturo    schedule 06.02.2019    source источник
comment
Почему бы вам не попробовать | тр -д '\п'   -  person sashok_bg    schedule 06.02.2019
comment
спасибо @sashok_bg к сожалению не работает.... все пишет в одну строку :-(   -  person Angelo Pisaturo    schedule 06.02.2019


Ответы (1)


Выражение

Parameters[?ParameterKey==`PARAM_VALUE1`].ParameterValue

возвращает проекцию, которая сама возвращает массив из ParameterValues. Несмотря на то, что этот массив содержит только один элемент, режим aws --output text все равно интерпретирует его как новую строку. Чтобы исправить это, вам нужно преобразовать проекцию в одно значение, используя канал |, чтобы остановить проекцию, а затем выбрать первый элемент в массиве:

aws cloudformation describe-stacks --query 'Stacks[*].[StackName,StackId,CreationTime,LastUpdatedTime,Parameters[?ParameterKey==`PARAM_NAME1`].ParameterValue|[0],Parameters[?ParameterKey==`PARAM_NAME2`].ParameterValue|[0]]' --output text

Вы увидите, что |[0] добавлено к каждому параметру в запросе.

person Justin Howard    schedule 06.02.2019