Comment multiplier un fichier de données .txt par un nombre constant?


9

J'ai un fichier .txt avec une colonne. il s'agit d'environ 8 000 numéros. Comment puis-je multiplier cette colonne de données par 1000000?


3
Si les nombres sont strictement entiers, alorssed 's/$/000000/' file.txt
glenn jackman

6
@glennjackman: Cela ressemble à une réponse. : -]
David Foerster

Et si les nombres ne sont pas des nombres entiers?
copper.hat

Réponses:


24

Vous pouvez utiliser la awkcommande:

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

16

Si les nombres dans le fichier sont des entiers ou de simples valeurs à virgule flottante, vous pouvez utiliser l' numfmtutilitaire avec --from-unit=pour indiquer la mise à l'échelle souhaitée.

Ex. donné

$ cat file
1.23
5
3.45
17
6.78
23

puis

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

Vous pouvez ajouter une variété de printfformats de style à la sortie, par exemple

$ 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

Alternativement, avec sedet bc:

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

ou (variante de polissage inversé)

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

Cela devrait-il être bcdans la dernière commande ou est- dcce autre chose?
PerlDuck

3
@PerlDuck dcest autre chose - voir par exemple En quoi bc est-il différent de dc?
steeldriver

LOL, je n'ai pas lu assez attentivement et pensé au poli comme pour faire quelque chose de brillant . Ty pour avoir expliqué.
PerlDuck

3
Ha, donc "polir à l'envers", c'est "faire quelque chose de moins brillant (plus boueux)"? OMI, DC répond à cette exigence
Glenn Jackman

Voir ce lien, Wikipedia: Notation polonaise inversée - Cela est devenu populaire dans les années 1970 avec le HP-35, la première calculatrice scientifique portable au monde, et la série de calculatrices suivante.
sudodus
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.