gpt4 book ai didi

json - 无法使用 jq 将 JSON 输出转换为 CSV 格式

转载 作者:行者123 更新时间:2023-12-02 14:54:17 24 4
gpt4 key购买 nike

我正在构建 AWS EBS 卷属性列表,以便我可以使用 jq 将其作为 CSV 存储在变量中。我要将变量输出到电子表格。

第一个命令给出了我使用 jq 寻找的值:

aws ec2 describe-volumes | jq -r '.Volumes[] | .VolumeId, .AvailabilityZone, .Attachments[].InstanceId, .Attachments[].State, (.Tags // [] | from_entries.Name)'

给出我想要的输出:

MIAPRBcdm0002_test_instance
vol-0105a1678373ae440
us-east-1c
i-0403bef9c0f6062e6
attached
MIAPRBcdwb00000_app1_vpc
vol-0d6048ec6b2b6f1a4
us-east-1c
MIAPRBcdwb00001 /carbon
vol-0cfcc6e164d91f42f
us-east-1c
i-0403bef9c0f6062e6
attached

但是,如果我将其转换为 CSV 格式以便将变量输出到电子表格,则该命令会崩溃并且不起作用:

aws ec2 describe-volumes | jq -r '.Volumes[] | .VolumeId, .AvailabilityZone, .Attachments[].InstanceId, .Attachments[].State, (.Tags // [] | from_entries.Name)| @csv'
jq: error (at <stdin>:4418): string ("vol-743d1234") cannot be csv-formatted, only array

对于 EBS 卷,即使将 JSON 的顶层转换为 CSV 格式也会失败:

aws ec2 describe-volumes | jq -r '.Volumes[].VolumeId | @csv'
jq: error (at <stdin>:4418): string ("vol-743d1234") cannot be csv-formatted, only array

这是 AWS EBS Volumes JSON FILE我正在使用这些命令(该文件已清除公司标识符,但它是有效的 json)。

如何使用 jq 将此 json 转换为 CSV 格式?

最佳答案

您只能在数组内容上应用@csv,只需将您的过滤器包含在[..] 中,如下所示

jq -r '[.Volumes[] | .VolumeId, .AvailabilityZone, .Attachments[].InstanceId, .Attachments[].State, (.Tags // [] | from_entries.Name)]|@csv'

使用上面的方法可能仍然保留引号,所以在这里使用 join() 也是合适的

jq -r '[.Volumes[] | .VolumeId, .AvailabilityZone, .Attachments[].InstanceId, .Attachments[].State, (.Tags // [] | from_entries.Name)] | join(",")'

关于json - 无法使用 jq 将 JSON 输出转换为 CSV 格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53754702/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com