与AWS CLI单独
我爱JQ,它的的确确是有利于与AWS CLI相结合,而只是与AWS你的情况,你已经可以做很多CLI中操作。
但是,如何提取两个或多个字段并用空格或逗号分隔它们?我想为每个实例并列列出PublicDnsName和VpcId。
aws ec2 describe-instances --query '
Reservations[*].Instances[].{PublicDnsName:PublicDnsName,VpcId:VpcId}' --output text
具体是什么我要找的是实例的一个列表,其中VpcId为null,未定义或不存在的
如果搜索空VpcId,下面将工作:
aws ec2 describe-instances --query '
Reservations[].Instances[?VpcId==``].[PublicDnsName]' --output text
与jq
工作
由于原来的问题是,从
如何告诉JQ打印倍数字段(键)AWS EC2 CLI
相信你一定能jq
工作,你可以得到多个字段被以下用逗号分隔
aws ec2 describe-instances |\
jq '.Reservations[].Instances[].PublicDnsName, .Reservations[].Instances[].VpcId'
您可以通过分解Reservations[].Instances
更好的写:
aws ec2 describe-instances |\
jq '.Reservations[].Instances[] | .PublicDnsName, .VpcId'
和JQ支持转化为CSV,但它需要采取一个数组,并避免与双引号的问题,您可以用原始数据的工作:
aws ec2 describe-instances |\
jq -r '.Reservations[].Instances[]
| [.PublicDnsName, .VpcId]
| @csv'
在后的将不仅仅是产品预期的结果:
"ec2-some_id_region.amazonaws.com","vpc-some_other_id"
感谢您的信息。通过'|分解它.PublicDnsName,.VpcId'适用于我。 –
另一个有用的变体: 'aws ec2 describe-instances | jq -r'.Reservations []。Instances [] | [.PrivateDnsName,.VpcId,。PublicDnsName] | @ tsv'' –