Как умножить файл данных .txt на постоянное число?

9

У меня есть файл .txt с одним столбцом. это около 8000 номеров. Как я могу умножить этот столбец данных на 1000000?

О.Е.
источник
3
Если числа строго целые, тоsed 's/$/000000/' file.txt
Гленн Джекман
6
@glennjackman: Это похоже на ответ. : -]
Дэвид Фёрстер
Что делать, если числа не являются целыми числами?
медь.

Ответы:

24

Вы можете использовать awkкоманду:

awk '{print $1*1000000}' file.txt
N0rbert
источник
16

Если числа в файле являются целыми числами или простыми значениями с плавающей точкой, вы можете использовать numfmtутилиту с, --from-unit=чтобы указать желаемое масштабирование.

Ex. данный

$ cat file
1.23
5
3.45
17
6.78
23

тогда

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

Вы можете добавить различные printfформаты -style к выводу, например

$ 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

В качестве альтернативы, с sedи bc:

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

или (вариант обратной польской)

sed 's/$/ 100000 * p/' file | dc
steeldriver
источник
Это должно быть bcв последней команде или dcчто-то еще?
PerlDuck
3
@PerlDuck dc- это что-то еще - см., Например, чем bc отличается от dc?
Steeldriver
LOL, я недостаточно внимательно прочитал и думал о полировке, как о том, чтобы сделать что-то блестящее . Ты за объяснение.
PerlDuck
3
Ха, так что «обратная полировка» означает «сделать что-то менее блестящим (более грязным)»? ИМО,
округ Колумбия
Посмотрите эту ссылку, Википедия: обратная польская запись. Эта модель стала популярной в 1970-х годах благодаря HP-35, первому в мире портативному научному калькулятору и следующей серии калькуляторов.
Судодус