使用jq命令很难将json转换为csv
{
"ResourceTagMappingList": [
{
"ResourceARN": "arn:aws:ec2:us-east-1:027906322765228:customer-gateway/cgw-e404f4440d",
"Tags": [
{
"Value": "useast-prod-vpn01-cisco",
"Key": "Name"
}
]
},
{
"ResourceARN": "arn:aws:ec2:us-east-1:017906322765228:customer-gateway/cgw-e7a447508555e",
"Tags": [
{
"Value": "useast-prod-vpn02-cisco",
"Key": "Name"
}
]
},
{
"ResourceARN": "arn:aws:ec2:us-east-1:5079063766562328:customer-gateway/cgw-e7a44754408e"
},
{
"ResourceARN": "arn:aws:ec2:us-east-1:07945406375465228:image/ami-012446b78ea15546fbd",
"Tags": [
{
"Value": "processor-USE-img-18022019",
"Key": "Name"
}
]
},
{
"ResourceARN": "arn:aws:ec2:us-east-1:079063765434343228:image/ami-0624f58fdf53eacd3775",
"Tags": [
{
"Value": "DevOpsUSE1",
"Key": "AppCluster"
},
{
"Value": "Image",
"Key": "AppEnv"
},
{
"Value": "Image",
"Key": "AppGroup"
}
]
},
{
"ResourceARN": "arn:aws:ec2:us-east-1:079063765228:instance/i-0087f44110c478d49",
"Tags": [
{
"Value": "Inst01USE1",
"Key": "App01"
},
{
"Value": "Production",
"Key": "AppEnv"
},
{
"Value": "usev-app01-ond-asg01",
"Key": "aws:autoscaling:groupName"
},
{
"Value": "lt-0ec354ad560e508cc",
"Key": "aws:ec2launchtemplate:id"
},
{
"Value": "8",
"Key": "aws:ec2launchtemplate:version"
}
]
}
]
}
期望得到的输出:
"ResourceARN","Name","AppCluster","AppEnv","AppGroup","App01","aws:autoscaling:groupName","aws:ec2launchtemplate:id","aws:ec2launchtemplate:version"
"arn:aws:ec2:us-east-1:027906322765228:customer-gateway/cgw-e404f4440d","useast-prod-vpn01-cisco",null,null,null,null,null,null,null
"arn:aws:ec2:us-east-1:017906322765228:customer-gateway/cgw-e7a447508555e","useast-prod-vpn02-cisco",null,null,null,null,null,null,null
"arn:aws:ec2:us-east-1:5079063766562328:customer-gateway/cgw-e7a44754408e",null,null,null,null,null,null,null,null
"arn:aws:ec2:us-east-1:07945406375465228:image/ami-012446b78ea15546fbd","processor-USE-img-18022019",null,null,null,null,null,null,null
"arn:aws:ec2:us-east-1:079063765434343228:image/ami-0624f58fdf53eacd3775",null,"DevOpsUSE1","Image","Image",null,null,null,null
"arn:aws:ec2:us-east-1:079550666376445228:instance/i-0087f44110c478d49",null,null,"Production",null,"Inst01USE1","usev-app01-ond-asg01","lt-0ec354ad560e508cc","8"
我尝试过但无法实现的事情:
cat resourcesfile.json | jq -rc '.ResourceTagMappingList[]|{ResourceARN,tags: [ .["Tags"][]["Value"] ]}|.[]'
cat resourcesfile.json | jq -r '[[.ResourceTagMappingList[]|[{ResourceARN},(.Tags|from_entries)]|add]|.[]|to_entries|.[]|.key]|unique'
cat resourcesfile.json | jq -r '[.ResourceTagMappingList[]|[[{ResourceARN},(.Tags|from_entries)]|add]|.[]|to_entries|.[]|.key]|unique as $fields | ($fields | @csv)'
在此先感谢您的帮助。
答案 0 :(得分:2)
$ jq -r '
reduce .ResourceTagMappingList[] as $p
( { names: null, rows: null };
( $p | { ResourceARN } + ( .Tags // [] | from_entries ) ) as $p
| .names[$p | keys_unsorted[]] = 0
| .rows += [$p]
) | ( .names | keys_unsorted ) as $names
| $names, ( .rows[] | [.[$names[]]] )
| @csv' file
"ResourceARN","Name","AppCluster","AppEnv","AppGroup","App01","aws:autoscaling:groupName","aws:ec2launchtemplate:id","aws:ec2launchtemplate:version"
"arn:aws:ec2:us-east-1:027906322765228:customer-gateway/cgw-e404f4440d","useast-prod-vpn01-cisco",,,,,,,
"arn:aws:ec2:us-east-1:017906322765228:customer-gateway/cgw-e7a447508555e","useast-prod-vpn02-cisco",,,,,,,
"arn:aws:ec2:us-east-1:5079063766562328:customer-gateway/cgw-e7a44754408e",,,,,,,,
"arn:aws:ec2:us-east-1:07945406375465228:image/ami-012446b78ea15546fbd","processor-USE-img-18022019",,,,,,,
"arn:aws:ec2:us-east-1:079063765434343228:image/ami-0624f58fdf53eacd3775",,"DevOpsUSE1","Image","Image",,,,
"arn:aws:ec2:us-east-1:079063765228:instance/i-0087f44110c478d49",,,"Production",,"Inst01USE1","usev-app01-ond-asg01","lt-0ec354ad560e508cc","8"