用jq中的空数组替换空值

时间:2018-12-14 15:08:27

标签: jq

我正在一个AWS账户中获得EBS卷的列表。我需要打印出卷ID的大小和连接的时间。

如果未附加卷,则其“附加时间”的值为空。我希望将空值替换为空数组。

如果我尝试替换一个空数组,则会出现此错误:

cat nonprod-ebs-sanitized.json | jq -r '.Volumes[]  | [ .VolumeId, .Size, (.Attachments[].AttachTime  // [] )] | @csv'

jq: error (at <stdin>:4041): array ([]) is not valid in a csv row

如果我替换其他任何内容,例如感叹号,则替换有效:

cat nonprod-ebs-sanitized.json | jq -r '.Volumes[]  | [ .VolumeId, .Size, (.Attachments[].AttachTime  // "!!!!!!!" )] | @csv'

"vol-0c21e56a50a1c5009",50,"!!!!!!!"
"vol-0b6d7b1488438cc95",120,"!!!!!!!"
"vol-066e24cb8d2294605",8,"2018-12-11T18:54:26.000Z"

如何用一个空数组代替空的附加时间值来工作?

这是我正在使用的原始json:ORIGINAL JSON

1 个答案:

答案 0 :(得分:0)

由于您没有遵循准则,因此很难确定您确切想要什么,因为“空数组”在CSV上下文中没有特定含义,但是使用{{1} },而不是表达式"[]"

中的[]