Como converter números grandes em notação científica

6

Estou trabalhando em um arquivo no qual tenho colunas de valores muito grandes.

(como 40 dígitos: 646512354651316486246729519751795724672467596754627.06843 e assim por diante ...)

Eu gostaria de ter esses números em notação científica, mas com apenas 3 ou 4 números após o ponto. Existe uma maneira de usar sed ou algo para fazer isso em cada número que aparece no meu arquivo?

    
por ghilesZ 13.04.2018 / 14:47

2 respostas

8

Se você deseja converter apenas uma coluna específica, awk ajuda

$ cat ip.txt
foo 64651235465131648624672951975 123
bar 3452356235235235 xyz
baz 234325236452352352345234532 ijkls

$ # change only second column
$ awk '{$2 = sprintf("%.3e", $2)} 1' ip.txt
foo 6.465e+28 123
bar 3.452e+15 xyz
baz 2.343e+26 ijkls
    
por 13.04.2018 / 14:56
12

Seu shell pode ter um printf embutido que você pode usar para formatar números.

$ type printf
printf is a shell builtin
$ printf "%.3e\n" 646512354651316486246729519751795724672467596754627.06843
6.465e+50
$ printf "%.4e\n" 646512354651316486246729519751795724672467596754627.06843
6.4651e+50
$ _

Se não, também há um binário printf dedicado.

$ which printf
/usr/bin/printf
$ _
    
por 13.04.2018 / 14:52