Wie multipliziere ich eine TXT-Datendatei mit einer konstanten Zahl?

9

Ich habe eine TXT-Datei mit einer Spalte. es sind ungefähr 8000 Zahlen. Wie kann ich diese Datenspalte mit 1000000 multiplizieren?

OE
quelle
3
Wenn die Zahlen streng ganze Zahlen sind, dannsed 's/$/000000/' file.txt
Glenn Jackman
6
@glennjackman: Das sieht nach einer Antwort aus. : -]
David Foerster
Was ist, wenn die Zahlen keine ganzen Zahlen sind?
Kupfer.hat

Antworten:

24

Sie können den folgenden awkBefehl verwenden:

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

Wenn die Zahlen in der Datei Ganzzahlen oder einfache Gleitkommawerte sind, können Sie das numfmtDienstprogramm mit verwenden --from-unit=, um die gewünschte Skalierung anzugeben.

Ex. gegeben

$ cat file
1.23
5
3.45
17
6.78
23

dann

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

Sie können printfder Ausgabe eine Vielzahl von Formatierungen hinzufügen, z

$ 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

Alternativ mit sedund bc:

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

oder (umgekehrte polnische Variante)

sed 's/$/ 100000 * p/' file | dc
Steeldriver
quelle
Sollte das bcim letzten Befehl sein oder ist dcetwas anderes?
PerlDuck
3
@PerlDuck dcist etwas anderes - siehe zum Beispiel Wie unterscheidet sich bc von dc?
Steeldriver
LOL, ich habe nicht sorgfältig genug gelesen und dachte an polieren wie in etwas glänzend machen . Ty zum Erklären.
PerlDuck
3
Ha, also "umgekehrte Politur" ist "etwas weniger glänzend (schlammiger) machen"? IMO, DC erfüllt diese Anforderung
Glenn Jackman
Siehe diesen Link, Wikipedia: Reverse Polish Notation - Dies wurde in den 1970er Jahren mit dem HP-35, dem weltweit ersten handgehaltenen wissenschaftlichen Taschenrechner, und der folgenden Reihe von Taschenrechnern populär.
Sudodus