Usando o bash para trocar as primeiras e segundas colunas em CSV

1

Estou usando o bash. Eu tenho um arquivo CSV com duas colunas de dados que parecem mais ou menos assim

 num_logins,day
 253,2016-07-01
 127,2016-07-02

Eu quero trocar a primeira e a segunda colunas (tornando a primeira coluna da data). Então eu tentei isso

awk ' { t = $1; $1 = $2; $2 = t; print; } ' /tmp/2016_logins.csv 

No entanto, os resultados são os mesmos. O que estou perdendo na minha declaração awk acima para fazer as coisas mudarem corretamente?

    
por Dave 06.08.2018 / 21:15

2 respostas

3

Aqui você vai:

  awk ' FS="," { print $2 "," $1 } ' sampleData.csv 
    
por 06.08.2018 / 21:20
5

Como o delimitador padrão é espaço / tabulação. Não vírgula. Pegando seu código original, e adicionando um -F, resolve.

$ awk -F, ' { t = $1; $1 = $2; $2 = t; print; } ' /tmp/2016_logins.csv
day num_logins
2016-07-01  253
2016-07-02  127
$

Desmontando para {$0=$2" "$1}1 obtém o mesmo resultado.

$ awk -F, '{$0=$2" "$1}1' /tmp/2016_logins.csv
day num_logins
2016-07-01  253
2016-07-02  127
$
    
por 06.08.2018 / 21:20