Замените пустые значения на пустые массивы в jq - PullRequest
0 голосов
/ 14 декабря 2018

Я получаю список томов EBS в учетной записи AWS.Мне нужно распечатать идентификатор тома, размер и время его подключения.

Если том не подключен, у него есть пустое значение для «время прикрепления».Я хотел бы заменить пустые значения для времени присоединения пустым массивом.

Если я пытаюсь заменить пустой массив, я получаю эту ошибку:

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, с которым я работаю: ОРИГИНАЛ JSON

1 Ответ

0 голосов
/ 14 декабря 2018

Поскольку вы не следовали рекомендациям , трудно определить, что именно вы хотите, поскольку «пустой массив» не имеет конкретного значения в контексте CSV, но имеет смысл использовать "[]" вместо [] в выражении // []

...