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, PrivateIpAddress, PrivateDnsName, PublicDnsName,[Tags[?Key==`Name`].Value],[Tags[?Key==`PowerData`].Value] ]' --output text | sed -E 's/s+/,/g'

出于某种原因,最后两条信息;名称";以及";PowerData";最后出现在不同的行上。当我在电子表格中打开它时,这会破坏我的格式。

有人知道是什么原因导致的吗?或者我该如何解决?

原因是TAG返回数组,因此需要打印0索引上的唯一值才能在单行上显示TAGs。您可以验证此

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]

jmespath管道表达式

所以试试这个

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'

相关内容

最新更新