Amazon web services AWS CLI正在将输出加载到多行

Amazon web services AWS CLI正在将输出加载到多行,amazon-web-services,aws-cli,Amazon Web Services,Aws Cli,我正在使用aws cli以.csv格式提供一些我需要的输出 下面显示了我组合的命令: aws ec2 describe-instances --output text --query 'Reservations[*].Instances[*].[VpcId, SubnetId, InstanceId, InstanceType, ImageId, State.Name, LaunchTime, Placement.AvailabilityZone, Placement.Tenancy, Priv

我正在使用aws cli以.csv格式提供一些我需要的输出

下面显示了我组合的命令:

aws ec2 describe-instances --output text --query 'Reservations[*].Instances[*].[VpcId, SubnetId, InstanceId, InstanceType, ImageId, State.Name, LaunchTime, Placement.AvailabilityZone, Placement.Tenancy, PrivateIpAddress, PrivateDnsName, PublicDnsName,[Tags[?Key==`Name`].Value],[Tags[?Key==`PowerData`].Value] ]' --output text | sed -E 's/\s+/,/g'
出于某种原因,最后两条信息“Name”和“PowerData”以单独的行结束。当我在电子表格中打开它时,这会弄乱我的格式


有没有人知道是什么原因造成的,或者我可以如何解决?原因是标记返回数组,所以您需要在
0
索引上打印唯一的值,以便在单行上显示
标记。
您可以验证这一点

aws ec2 describe-instances --output json --query 'Reservations[*].Instances[*].Tags[]' 
输出

    [
        {
            "Key": "Name",
            "Value": "demo"
        },
        {
            "Key": "PowerData",
            "Value": "demo"
        }
    ]
所以你需要管道表达式

Tags[?Key==`Name`].Value| [0]
通过添加过滤器,我们可以将一个表达式的结果传递给另一个表达式,对投影(或任何表达式)的结果进行操作

表达方式:

foo.*.bar | [0]

所以试试这个

aws ec2 describe-instances --output text --query 'Reservations[*].Instances[*].[VpcId, SubnetId, InstanceId, InstanceType, ImageId, State.Name, LaunchTime, Placement.AvailabilityZone, Placement.Tenancy, PrivateIpAddress, PrivateDnsName, PublicDnsName,Tags[?Key==`Name`].Value| [0],Tags[?Key==`PowerData`].Value | [0] ]' --output text | sed -E 's/\s+/,/g'

你是一个美丽的人。热爱你的工作:-)