quarta-feira, 27 de julho de 2016

Ajustes em um arquivo CSV

Tive alguns problemas na conversao de dados que estavam separados por espacos para formatar um arquivo separados por virgula (CSV). Neste arquivo de entrada haviam vários separadores entre um campo e outro e que deveriam ser substituídos por um único, veja o exemplo do dado de entrada:

YYYYMMDD HHMM sat lat lon T21 T31 sample FRP conf type
20160401 0013 T  -9.929  151.006 313.3 295.8  490     6.3  43  0
20160401 0016 T -21.804  149.064 314.0 294.5  571     7.5  48  0
20160401 0017 T -23.772  151.204 315.0 300.3  827     8.2   0  2


Entao, com uso do comando SED:
sed -i.bak 's/ \{1,\}/,/g' MCD14ML.20160?.006.01.txt

Conseguí fazer a conversao dos dados para:

YYYYMMDD,HHMM,sat,lat,lon,T21,T31,sample,FRP,conf,type
20160401,0013,T,-9.929,151.006,313.3,295.8,490,6.3,43,0
20160401,0016,T,-21.804,149.064,314.0,294.5,571,7.5,48,0
20160401,0017,T,-23.772,151.204,315.0,300.3,827,8.2,0,2

Um detalhe deste comando é que o -i faz a substituicao no mesmo arquivo, porém com -i.bak ele adiciona esta extencao no arquivo original mantendo uma cópia.