Excluir linha não numérica de um csv

0

Eu usei sed para permitir apenas o formato numérico e csv, usei sed '/[^0-9, -, .]/d' como regex. Ainda tem "_","1-0","1-1" caractere como o / p que me preocupa.

sed 's/'"$(printf '5')"'//g' ./abc.CSV | sed '/[^0-9, -, .]/d' 
1,090216002122,128,126,134,124,-0,00,220,28,292688,077,040911,0858,0159
1,090216002123,128,126,134,124, 000,00,_220,28,292688,077,040911,0858,0159
1,090216002125,128,126,134,124, 000,00,220,28,292688,077,040911,0858,170
1,090216002126,128,126,134,124, 000,-.00,220,28,292688,077,040911,0858,0159
1,090216002130,128,126,134,124, 000,00,220,28,292688,077,040911,0858,   
1,090216002134,128,126,134,124, 000,00,220,28,,077,040911,0858,0159
1,090216002135,128,126,134,124, 000,00,220,28,077,040911,0858,0159
11,090216002137,128,126,134,124, 000,00,220,28,292688,077,040911,0858,0159
1-1,090216002137,128,126,134,124, 000,00,220,28,292688,077,040911,0858,0159
1,000000000000,000,0,0,0,0,0,0,0,0,0,0,0,0
1,040216002137,128,126,134,124, 000,00,220,28,292688,077,040911,0858,0159
1,090216002137,128,126,134,124, 000,00,220,28,292688,077,040911,0858,0-1

Eu tentei com ($9 ~ /^-?[0-9]+([.][0-9]+)?$/ ) parece não funcionar com o número do espaço. Eu também tentei com

Qual é a melhor maneira de analisar apenas numérico de um arquivo csv? Obrigado.

    
por Aashu 11.02.2016 / 05:17

1 resposta

0

Vamos ver seu comando:

sed '/[^0-9, -, .]/d'

O que isso realmente faz:

Exclui todas as linhas que possuem quaisquer caracteres além do seguinte:

  • um número (0-9)
  • uma vírgula
  • qualquer caractere de um espaço para uma vírgula - que inclui sublinhados, a propósito, além de hifens
  • um período.

Assim, qualquer linha que tenha qualquer caractere diferente dessas, será excluída.

O que você acha que isso faz:

Não tenho certeza.

    
por 15.04.2016 / 22:33

Tags