Не используйте sed
для удаления кавычек.Кавычки не просто важные , они критические .
Рассмотрим следующий пример:
jq -Rnr '[inputs] | @csv' <<EOF
first item
second item,has,commas
third item
EOF
Этот код выдает одну строку, , который на самом деле является действительным трехэлементным CSV :
"first item","second item,has,commas","third item"
Посмотрите, как запятые, являющиеся данными, находятся внутри кавычек, тогда как запятые, которые являются синтаксисом, находятся вне их?Это критический элемент синтаксиса CSV.
Это только когда вы избавляетесь от кавычек, защищающих те запятые, с которыми вы заканчиваете:
first item,second item,has,commas,third item
... гдеданные анализируются как 5 ячеек вместо 3.
Чтобы фактически гарантировать, что ваши IP-адреса передаются в @csv
как одно поле, вы можете присоединиться к ним заранее;это может быть что-то вроде:
jq -r '
.Reservations[].Instances[]
| [ .InstanceId,
([.NetworkInterfaces[].PrivateIpAddresses[].Association.PublicIp // null
] | join(","))
] | @csv'
Это все еще содержит запятые между IP-адресами, но эти запятые будут внутри кавычек , и, таким образом, будут рассматриваться как данные в поле, а не какразделить между двумя полями - совместимым парсером.