Json 解析AWS CLI命令

Json 解析AWS CLI命令,json,bash,amazon-web-services,parsing,aws-cli,Json,Bash,Amazon Web Services,Parsing,Aws Cli,我想分析AWS CLI命令的输出 aws ec2 describe-transit-gateways 从上面可以看出,我想要得到的输出是作为标记示例给出的传输网关的名称:(“name”:“dev tgw”) 我能够从下面的脚本中检索TGW ID和传输网关所有者 result=`aws ec2 describe-transit-gateways --profile $acc` for tgw in $(echo "${result}" |jq -r '.Transi

我想分析AWS CLI命令的输出

aws ec2 describe-transit-gateways

从上面可以看出,我想要得到的输出是作为标记示例给出的传输网关的名称:
(“name”:“dev tgw”)

我能够从下面的脚本中检索TGW ID和传输网关所有者

result=`aws ec2 describe-transit-gateways --profile $acc`

  for tgw in $(echo "${result}" |jq -r '.TransitGateways[] | @base64'); do

    _jq() {

      echo ${tgw} | base64 --decode | jq -r ${1}

    }
    
    Tgw=$(_jq '.TransitGatewayId')
    Tgw_owner=$(_jq '.OwnerId')
    Tgw_name=$(_jq '.Tags.Name')

    echo "$acc.Name"
    echo "Transit_Gateway": "$Tgw"
    echo "TGW_Owner_ID": "$Tgw_owner"
    echo "TGW_name": "$Tgw_name"
但我无法使用检索TGW的名称

 Tgw_name=$(_jq '.Tags.Name')
 echo "TGW_name": "$Tgw_name"

我遗漏了什么还是循环错误了?

您可以尝试以下版本:

result=$(aws ec2 describe-transit-gateways --profile $acc)

for tgw in $(echo "${result}" | jq -r '.TransitGateways[] | @base64'); do

    _jq() {
      echo ${tgw} | base64 --decode | jq -r "${1}"
    }
    
    Tgw=$(_jq '.TransitGatewayId')
    Tgw_owner=$(_jq '.OwnerId')
    Tgw_name=$(_jq '.Tags[] | select(.Key == "Name").Value')
    
    echo "$acc.Name"
    echo "Transit_Gateway": "$Tgw"
    echo "TGW_Owner_ID": "$Tgw_owner"
    echo "TGW_name": "$Tgw_name"
    
done

```jq:错误:无法打开文件|:没有这样的文件或目录jq:错误:无法打开文件选择(.Key:没有这样的文件或目录jq:错误:无法打开文件==:没有这样的文件或目录jq:错误:无法打开文件“名称”)。值:没有这样的文件或目录directory@Balakrishna你复制了所有的代码而不是一行吗?是的,谢谢man@Balakrishna没问题。很高兴它成功了:-)