與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'' –