Как показать ноль до десятичной точки в БК?

9
echo "scale=3;1/8" | bc

показывает .125на экране. Как показать, 0.125если выходной результат меньше единицы?

Кевин Донг
источник

Ответы:

9

bcне может выводить ноль до десятичной точки, вы можете использовать printf :

$ printf '%.3f\n' "$(echo "scale=3;1/8" | bc)"
0.125
cuonglm
источник
Более удобочитаемая команда. ;-)
Кевин Донг
1

Вы можете трубку в awk

echo "scale=3;1/8" | bc | awk '{printf "%.3f\n", $0}'

или вы можете просто использовать awk для всего этого

awk '{printf "%.3f\n", 1/8}' <<< ""

Вывод

0.125

источник
Почему мы должны делать <<< ""?
Кевин Донг
Для работы @KevinDongNaiJia awk требуется входной файл, он создает и очищает here string. Таким образом, в основном притворяется, что в конце есть пустой файл, иначе awk будет читать из stdin.Дополнительная информация здесь
@cuonglm, так что вы не можете редактировать мои ответы, пожалуйста.
@cuonglm Petty downvote, хорошо!
1
@JID: Не вся оболочка поддерживает здесь строку, вам нужно указать ее для других зрителей. Использование BEGINблока избавит вас от этой проблемы, и это портативно.
cuonglm