【发布时间】:2017-05-20 02:15:19
【问题描述】:
我有一个 JSON 文档,如下所示:
{
"Images": [
{
"ImageId": "ami-111",
"Name": "etl-db",
"State": "available",
"BlockDeviceMappings": [
{
"DeviceName": "/dev/sda",
"Ebs": {
"SnapshotId": "snap-AAA",
"VolumeSize": "size-AAA"
}
},
{
"DeviceName": "/dev/sdb",
"Ebs": {
"SnapshotId": "snap-BBB",
"VolumeSize": "size-BBB"
}
}
]
}
]
}
我使用以下 jq 命令 tr 来获取如下输出: ami-111|etl-db|可用|snap-AAA|size-AAA ami-111|etl-db|可用|snap-BBB|size-BBB
cat json.doc | jq -r '.Images[]|"\(.ImageId)|\(.Name)|\(.State)|\(.BlockDeviceMappings[].Ebs.SnapshotId)|\(.BlockDeviceMappings[].Ebs.VolumeSize)"'
但是它会为 SnapshotId x VolumeSize 生成笛卡尔积
ami-111|etl-db|available|snap-AAA|size-AAA
ami-111|etl-db|available|snap-BBB|size-AAA
ami-111|etl-db|available|snap-AAA|size-BBB
ami-111|etl-db|available|snap-BBB|size-BBB
我怎样才能得到以下输出?
ami-111|etl-db|available|snap-AAA|size-AAA
ami-111|etl-db|available|snap-BBB|size-BBB
谢谢!
【问题讨论】: