¿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?


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:



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

¿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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.