¿Cómo multiplicar un archivo de datos .txt por un número constante?

9

Tengo un archivo .txt con una columna. Son unos 8000 números. ¿Cómo puedo multiplicar esta columna de datos por 1000000?

OE
fuente
3
Si los números son estrictamente enteros, entoncessed 's/$/000000/' file.txt
glenn jackman
66
@glennjackman: Eso parece una respuesta. : -]
David Foerster
¿Qué pasa si los números no son enteros?
copper.hat

Respuestas:

24

Puedes usar el awkcomando:

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

Si los números en el archivo son enteros o valores simples de punto flotante, puede usar la numfmtutilidad con --from-unit=para indicar la escala deseada.

Ex. dado

$ cat file
1.23
5
3.45
17
6.78
23

entonces

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

Puede agregar una variedad de printfformatos de estilo a la salida, por ejemplo

$ 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, con sedy bc:

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

o (variante de pulido inverso)

sed 's/$/ 100000 * p/' file | dc
conductor de acero
fuente
¿Debería estar bcen el último comando o es dcalgo más?
PerlDuck
3
@PerlDuck dces otra cosa; vea, por ejemplo, ¿en qué se diferencia bc de dc?
steeldriver
LOL, no he leído con suficiente cuidado y pensé en el esmalte como en hacer algo brillante . Ty por explicarlo.
PerlDuck
3
Ja, ¿entonces "pulido inverso" es "hacer algo menos brillante (más fangoso)"? OMI, DC cumple con ese requisito
Glenn Jackman
Vea este enlace, Wikipedia: notación polaca inversa : esto se hizo popular en la década de 1970 con la HP-35, la primera calculadora científica portátil del mundo y la siguiente serie de calculadoras.
sudodus