#!/usr/bin/awk -f
BEGIN { FS = "\t"; OFS = "," }
{
for(i = 1; i <= NF; i++) {
if ($i + 0 == $i) { $i = "=" $i }
else gsub(/"/, "\"\"", $i);
$i = "\"" $i "\""
}
print
}
Supondo que você nomeie esse convert.awk
, você pode ligar para
ec2-describe-snapshots -H --hide-tags | awk -f convert.awk > snapshots.csv
ou (depois de adicionar permissões de execução, chmod a+x convert.awk
)
ec2-describe-snapshots -H --hide-tags | ./convert.awk > snapshots.csv
Isso fará uma nova coluna para cada
tab, que manterá a coluna de comentário unida (a menos que contenha tabulações), mas adicione colunas vazias (embora seja assim que o resultado de sua amostra parece, então talvez você realmente queira isso).
Se você quiser dividir em todos os espaços em branco (isso irá recolher guias extras dentro da tabela, mas colocar cada palavra na descrição como uma nova coluna), tire a instrução FS="\t";
.
Para as gerações futuras, se você não precisa do "
s ou do =
s ou do espaço em branco incorporado, é possível torná-lo uma única linha:
awk -v OFS=, '{$1=$1;print}'