Como ter um zero à direita no CSV

0

A seguir, o arquivo csv de amostra:

12354506.0,4
13129229.0,4
815612,5
7624107.0,5
6056548.0,5

O zero à direita na primeira coluna é formatado para o número do furo no CSV VIEWER.

Existe alguma opção para ter um zero à direita?

Eu pude ter o zero final por aspas simples do prefixo na primeira coluna. Mas parece estranho com aspas simples.

'12354506.0,4
'13129229.0,4
'815612,5
'7624107.0,5
'6056548.0,5 
    
por msp9011 27.07.2018 / 08:18

3 respostas

0

Como o software visualizador CSV parece ser capaz de detectar números de ponto flutuante pela inclusão de uma parte fracionária, os números devem ser convertidos para ter pelo menos um decimal.

Uma maneira de fazer isso com awk :

awk -F, -vOFS="," '$1 == int($1) { $1 = sprintf("%.1f", $1) } 1' file >newfile

Isso testaria o primeiro campo separado por vírgula para ver se era um número inteiro. Nesse caso, ele iria reescrever o campo como n.0 (onde n é o número original). O 1 no código causaria a saída de todas as linhas.

O resultado é escrito no novo arquivo newfile .

Uma solução semelhante usando sed :

sed 's/^\([0-9]*\),/.0,/' file >newfile

Aqui, combinamos qualquer número de dígitos seguido imediatamente por uma vírgula e substituímos os mesmos dígitos, .0 e vírgula. Isso ignoraria os números que já têm partes fracionárias, mas adicionaria .0 a números que não têm isso.

    
por 27.07.2018 / 09:06
0

É puramente o comportamento do visualizador de CVS que você está usando. Eu sou capaz de replicar o mesmo problema com o MS Excel.

awk -F "," '{print "=\""$1"\","$2}' test.csv > test3.csv
  • = forçará os dados a serem texto.

Para editar o arquivo.

echo "$(awk -F "," '{print "=\""$1"\","$2}' test.csv)" > test.csv
    
por 27.07.2018 / 09:05
0

com referência à resposta .

 awk -F ","  'BEGIN {OFS = FS}{$1="=\""$1"\""; print}' test.csv

podemos não saber quantos campos em um csv. É muito difícil declarar cada campo para imprimir. Então, melhor podemos editar o campo que é necessário.

    
por 27.07.2018 / 19:34