substitui espaço e células vazias no arquivo csv

0

Eu tenho um arquivo csv com 7 colunas. Tem células vazias e alguns espaços entre as células. Como posso substituir as células vazias por NA e remover espaços extras? Muito obrigado!

Aqui está o meu arquivo, mas aqui ele parece se desviar quando eu copio e passo por ele.

130070078,PPW0001,1,4,4HW             ,2,15.61943874
120040039,PPW0002,0,0,                ,0,0
120040043,PPW0003,1,3,3WE             ,1,14.43394935
    
por Elham 12.03.2017 / 17:45

2 respostas

0

Sua resposta:

sed 's/ *,/,/g' file1 | sed 's/,,/,NA,/g' > file2

Para obter 'NA' no último campo, se estiver em branco:

sed 's/ *,/,/g' file1 | sed 's/,,/,NA,/g' | awk -F, 'OFS="," {if ($NF == "") $NF = "NA"; print}'> file2

Você também pode usar:

sed 's/,,/,NA,/g' file1 | tr -d ' ' | awk -F, 'OFS="," {if ($NF == "") $NF = "NA"; print}'
    
por 30.04.2017 / 00:16
0

Usando sed , que também funcionará para campos vazios repetidos:

sed ':l;s/,,/,NA,/;tl; s/[[:blank:]]*//g'

Ou usando awk :

awk '{i=0;while(i++<2){gsub(/,,/,",na,");gsub(/ /, "")}}1'

Input:

130070078,PPW0001,1,4,4HW         ,2,15.61943874
120040039,PPW0002,0,0,            ,0,0
120040043,PPW0003,1,3, 3WE       ,1,14.43394935
120040043,PPW0003,1 ,3,3WE         ,1,14.43,,,3,,94,,,,9,,,,,35
120040043,PPW0003,0, 2, 3WE       ,1,14.43,,,3,,94,,,,9,,,,,35

Output:

130070078,PPW0001,1,4,4HW,2,15.61943874
120040039,PPW0002,0,0,,0,0
120040043,PPW0003,1,3,3WE,1,14.43394935
120040043,PPW0003,1,3,3WE,1,14.43,NA,NA,3,NA,94,NA,NA,NA,9,NA,NA,NA,NA,35
120040043,PPW0003,0,2,3WE,1,14.43,NA,NA,3,NA,94,NA,NA,NA,9,NA,NA,NA,NA,35
    
por 20.10.2017 / 09:42

Tags