【jq】粋な小技(複数キー、配列に変換)

複数キーを出力させる場合は、カンマ区切りでキーを指定する。
また、「InstanceName: (.Tags[] | select(.Key==”Name”).Value),」な感じで、<新キー名>:(キー)とすることで、新しいキーで出力させられる
aws ec2 describe-instances | jq '.Reservations[].Instances[] | {InstanceId, InstanceName: (.Tags[] | select(.Key=="Name").Value), Status: (.State.Name) }'
{ "InstanceId": "i-0bea566068a15007b", "InstanceName": "Server1", "Status": "stopped" } { "InstanceId": "i-04752c2087caa6f62", "InstanceName": "Server2", "Status": "running" }
全体を配列にする場合は、jq ‘[<中身>]’このような感じでカッコを指定すると配列というか配列っぽいオブジェクトになる
aws ec2 describe-instances | jq '[.Reservations[].Instances[] | {InstanceId, InstanceName: (.Tags[] | select(.Key=="Name").Value), Status: (.State.Name) }]'
[ { "InstanceId": "i-0bea566068a15007b", "InstanceName": "Server1", "Status": "stopped" }, { "InstanceId": "i-04752c2087caa6f62", "InstanceName": "Server2", "Status": "running" } ]
各項目を配列にするときは| to_entriesにわたす
aws ec2 describe-instances | jq -r '.Reservations[].Instances[] | {InstanceId, InstanceName: (.Tags[] | select(.Key=="Name").Value), Status: (.State.Name) }' | jq '. | to_entries'
[ { "key": "InstanceId", "value": "i-0bea566068a15007b" }, { "key": "InstanceName", "value": "Server1" }, { "key": "Status", "value": "stopped" } ] [ { "key": "InstanceId", "value": "i-04752c2087caa6f62" }, { "key": "InstanceName", "value": "Server2" }, { "key": "Status", "value": "running" } ]
一発目から配列で出力する場合は、「| [.InstanceId, (.Tags[] | select(.Key==”Name”).Value),.State.Name]」な感じで、[]を指定する
aws ec2 describe-instances | jq -r '.Reservations[].Instances[] | [.InstanceId, (.Tags[] | select(.Key=="Name").Value),.State.Name]'