Come moltiplicare un file di dati .txt per un numero costante?


9

Ho un file .txt con una colonna. sono circa 8000 numeri. Come posso moltiplicare questa colonna di dati per 1000000?


3
Se i numeri sono rigorosamente numeri interi, allorased 's/$/000000/' file.txt
glenn jackman,

6
@glennjackman: sembra una risposta. : -]
David Foerster,

Cosa succede se i numeri non sono numeri interi?
Copper.hat il

Risposte:



16

Se i numeri nel file sono numeri interi o semplici valori in virgola mobile, è possibile utilizzare l' numfmtutilità con --from-unit=per indicare il ridimensionamento desiderato.

Ex. dato

$ cat file
1.23
5
3.45
17
6.78
23

poi

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

È possibile aggiungere una varietà di printfformattazioni di stile all'output, ad es

$ 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

In alternativa, con sedebc :

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

o (variante inversa dello smalto)

sed 's/$/ 100000 * p/' file | dc

Dovrebbe essere bcnell'ultimo comando o è dcqualcos'altro?
PerlDuck,

3
@PerlDuck dcè qualcos'altro - vedi ad esempio In cosa differisce bc da dc?
Steeldriver,

LOL, non ho letto abbastanza attentamente e ho pensato allo smalto come a rendere brillante qualcosa . Ty per la spiegazione.
PerlDuck,

3
Ah, quindi "inversione di smalto" è "rendere qualcosa di meno lucido (più fangoso)"? IMO, DC soddisfa tale requisito
Glenn Jackman,

Vedi questo link, Wikipedia: Notazione polacca inversa - Questa è diventata popolare negli anni '70 con l'HP-35, il primo calcolatore scientifico portatile al mondo e le seguenti serie di calcolatrici.
sudodus,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.