Jak pomnożyć plik danych .txt przez stałą liczbę?


9

Mam plik .txt z jedną kolumną. jest to około 8000 liczb. Jak mogę pomnożyć tę kolumnę danych przez 1000000?


3
Jeśli liczby są ściśle liczbami całkowitymi, tosed 's/$/000000/' file.txt
glenn jackman

6
@glennjackman: To wygląda jak odpowiedź. : -]
David Foerster

Co jeśli liczby nie są liczbami całkowitymi?
copper.hat

Odpowiedzi:



16

Jeśli liczby w pliku są liczbami całkowitymi lub prostymi wartościami zmiennoprzecinkowymi, można użyć numfmtnarzędzia z --from-unit=do wskazania żądanego skalowania.

Dawny. dany

$ cat file
1.23
5
3.45
17
6.78
23

następnie

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

Możesz dodać różne printfformaty do stylu np

$ 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

Alternatywnie za pomocą sedi bc:

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

lub (wariant z odwrotnym polerowaniem)

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

Czy to powinno być bcostatnie polecenie, czy może dccoś jeszcze?
PerlDuck

3
@PerlDuck dcto coś innego - patrz na przykład Czym różni się BC od DC?
steeldriver

LOL, nie przeczytałem wystarczająco uważnie i pomyślałem o polerowaniu jako o zrobieniu czegoś błyszczącego . Ty za wyjaśnienie.
PerlDuck

3
Ha, więc „odwrotne polerowanie” oznacza „zrobić coś mniej błyszczącego (bardziej zabłoconego)”? IMO, dc spełnia to wymaganie
glenn jackman

Zobacz ten link, Wikipedia: Odwrotna notacja polska - stała się popularna w latach 70. XX wieku dzięki HP-35, pierwszemu na świecie ręcznemu kalkulatorowi naukowemu oraz następnej serii kalkulatorów.
sudodus
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.