Comando do terminal para saída como csv com duas colunas

2

Eu tenho um script awk no terminal onde ele executa uma função de contagem:

awk '{ a[$2]++ }END{ for(i in a) printf "%-15s%s\n",i,a[i] }'   
Data_1

e eu pretendo produzir como um arquivo csv onde eu adiciono

awk '{ a[$2]++ }END{ for(i in a) printf "%-15s%s\n",i,a[i] }'    
Data_1 > Count.csv

mas o problema que estou enfrentando agora é o script awk acima das saídas

Gregor   4
Alexis   15
George   17

e após a saída como um arquivo csv, o nome e a contagem são anexados a apenas uma coluna A no Excel. Como formatar o comando csv no terminal para especificar o nome para ter uma coluna e o número em outra coluna? No excel eu quero obter

A         B
Gregor    4
Alexis    15
George    17
    
por Maxxx 18.10.2017 / 06:14

1 resposta

3

Você precisa adicionar uma vírgula entre os campos para ter o formato simples .csv type quando estiver usando com printf .

awk '{ a[$2]++ }END{ for(i in a) printf "%-15s,%s\n",i,a[i] }'
Gregor    ,4
Alexis    ,15
George    ,17

Ou o tipo .csv completo

awk '{ a[$2]++ }END{ for(i in a) printf "\"%-15s\",\"%s\"\n",i,a[i] }'
"Gregor    ","4"
"Alexis    ","15"
"George    ","17"

Mas você pode usar print e deixar awk adicionar vírgula com OFS (simples .csv).

awk '{ a[$2]++ }END{ for(i in a) print i,a[i] }' OFS=,
Gregor,4
Alexis,15
George,17

Ou apenas imprima nos próprios campos.

awk '{ a[$2]++ }END{ for(i in a) print i","a[i] }'
Gregor,4
Alexis,15
George,17

Para o formato .csv completo.

awk '{ a[$2]++ }END{ for(i in a) print "\""i"\",\""a[i]"\"" }'
"Gregor","4"
"Alexis","15"
"George","17"
    
por 18.10.2017 / 08:59