Como multiplicar um arquivo de dados .txt por um número constante?

9

Eu tenho um arquivo .txt com uma coluna. são cerca de 8000 números. Como posso multiplicar esta coluna de dados por 1000000?

OE
fonte
3
Se os números são estritamente inteiros, entãosed 's/$/000000/' file.txt
glenn jackman
6
@glennjackman: Parece uma resposta. : -]
David Foerster
E se os números não forem números inteiros?
copper.hat

Respostas:

24

Você pode usar o awkcomando:

awk '{print $1*1000000}' file.txt
N0rbert
fonte
16

Se os números no arquivo forem inteiros ou valores simples de ponto flutuante, você poderá usar o numfmtutilitário com --from-unit=para indicar a escala desejada.

Ex. dado

$ cat file
1.23
5
3.45
17
6.78
23

então

$ numfmt --from-unit=100000 < file
123000.00
500000
345000.00
1700000
678000.00
2300000

Você pode adicionar uma variedade de printfformatação de estilo à saída, por exemplo

$ numfmt --from-unit=100000  --format="%'12.2f" < file
  123,000.00
  500,000.00
  345,000.00
1,700,000.00
  678,000.00
2,300,000.00

Alternativamente, com sede bc:

sed 's/$/ * 100000/' file | bc

ou (variante polonês reversa)

sed 's/$/ 100000 * p/' file | dc
chave de aço
fonte
Isso deveria estar bcno último comando ou é dcoutra coisa?
PerlDuck
3
@PerlDuck dcé outra coisa - veja, por exemplo, o que é bc diferente de dc?
steeldriver
LOL, eu não li com atenção suficiente e pensei em polonês como para fazer algo brilhante . Ty por explicar.
PerlDuck
3
Ha, então "polonês reverso" é "fazer algo menos brilhante (mais lamacento)"? IMO, dc satisfaz esta exigência
glenn jackman
Veja este link, Wikipedia: Notação polonesa reversa - Isso se tornou popular nos anos 70 com o HP-35, a primeira calculadora científica portátil do mundo e a seguinte série de calculadoras.
sudodus