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?


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

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

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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.