有没有一种方法可以输出带有过滤器的AWS cli到csv格式?
例如,如果我想接受这个命令并输出到csv:
aws ec2 describe-images --owner self --query 'Images[*].{ID:ImageId,"Virtualization Type":VirtualizationType}'我该怎么做?通常,我会使用jq将aws cli输出到csv。但在这种情况下,我能够更容易地获得我想要的信息,使用过滤器选项,而不是jq。
这是我想输出给CSV的完整命令:
aws ec2 describe-images --owner self --query 'Images[*].{ID:ImageId,"Virtualization Type":VirtualizationType,Architechture:Architecture,Hypervisor:Hypervisor,State:State,ImageID:ImageId,"Device Names":BlockDeviceMappings[].DeviceName,"Snapshot IDs":BlockDeviceMappings[].Ebs.SnapshotId,"Delete On Termination":BlockDeviceMappings[].Ebs.DeleteOnTermination,"Voluem Type":BlockDeviceMappings[].Ebs.VolumeType,"Volume Size":BlockDeviceMappings[].Ebs.VolumeSize,Encrypted:BlockDeviceMappings[].Ebs.Encrypted,"Image Location":ImageLocation,"Root Device Type":RootDeviceType,"Owner ID":OwnerId,"Creation Date":CreationDate,Public:Public,"Image Type":ImageType,Name:Name}'发布于 2018-12-17 22:04:54
我能想到的一个解决方案是以文本--output text输出,然后用逗号替换空格:
aws ec2 describe-images --owner self --query 'Images[*].{ID:ImageId,"Virtualization Type":VirtualizationType}' --output text输出
ami-1234567890 hvm
ami-1a2b3c4d5e hvm
ami-9876543210 hvm用逗号替换空格。使用sed或tr、awk或paste有很多方法来实现这一点。
aws ec2 describe-images --owner self --query 'Images[*].{ID:ImageId,"Virtualization Type":VirtualizationType}' --output text | sed -E 's/\s+/,/g'输出
ami-1234567890,hvm
ami-1a2b3c4d5e,hvm
ami-9876543210,hvm发布于 2021-04-09 21:28:32
我们今天不得不做一些非常类似的事情,我们使用jq来获得csv的本地输出。
aws ec2 describe-instances --output json --query 'foo' | \
jq -r '.[][] | @csv'.[][]表示法,因为我们的查询正在以一种特定的方式重新格式化输出。我不认为大多数情况下都需要以同样的方式引用输出。https://stackoverflow.com/questions/53787555
复制相似问题