aws cliでフィルタした配列をいい感じにCSVにして、エクセルに貼り付けたかった。
キーがたくさんあるし、値があったりなかったりするので、いちいち配列の形でキーを列挙したくなかった。
この回答の通り。
jq -r '(map(keys) | add | unique) as $cols | map(. as $row | $cols | map($row[.])) as $rows | $cols, $rows[] | @csv'
aws コマンドと組み合わせるとこんな感じ
前の記事も参考に、Nameタグを上位に上げて、キーTagsのオブジェクトを消してから丸ごとCSVにする感じ
$ aws ec2 describe-addresses \ | jq -r '[ .Addresses[] | (.Tags[]? | select( .Key=="Name") | .Value) as $name | del(.Tags) | . + {Name: $name} ] | (map(keys) | add | unique) as $cols | map(. as $row | $cols | map($row[.])) as $rows | $cols, $rows[] | @csv' "AllocationId","AssociationId","Domain","InstanceId","Name","NetworkBorderGroup","NetworkInterfaceId","NetworkInterfaceOwnerId","PrivateIpAddress","PublicIp","PublicIpv4Pool" "eipalloc-12345","eipassoc-12345","vpc",,"EIP-NAME","ap-northeast-1","eni-12345","12345","10.0.0.10","123.123.123.123","amazon"