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


9

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


3
Если числа строго целые, тоsed 's/$/000000/' file.txt
Гленн Джекман

6
@glennjackman: Это похоже на ответ. : -]
Дэвид Фёрстер

Что делать, если числа не являются целыми числами?
медь.

Ответы:



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

Это должно быть bcв последней команде или dcчто-то еще?
PerlDuck

3
@PerlDuck dc- это что-то еще - см., Например, чем bc отличается от dc?
Steeldriver

LOL, я недостаточно внимательно прочитал и думал о полировке, как о том, чтобы сделать что-то блестящее . Ты за объяснение.
PerlDuck

3
Ха, так что «обратная полировка» означает «сделать что-то менее блестящим (более грязным)»? ИМО,
округ Колумбия

Посмотрите эту ссылку, Википедия: обратная польская запись. Эта модель стала популярной в 1970-х годах благодаря HP-35, первому в мире портативному научному калькулятору и следующей серии калькуляторов.
Судодус
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.