这是一个bc
输出,例如:
输入:
echo "scale=10; BLA-BLA-HERE-NOT-IMPORTANT" | bc
输出:
.3708446283953709207058828124021300754352578903651372655882743141882\
77124645102027246581819139527644919407424570060822470537797066353573\
96635.8038454068 days
两个问题:
- 输出可以四舍五入为“0.3708...”之类的值吗?
- 我可以删除末尾的“\n”-s吗?
我在 中找不到任何最大宽度选项bc
。
答案1
使用 的 GNU 实现bc
,您可以设置一个环境变量,BC_LINE_LENGTH
该变量将禁用反斜杠 + 换行符功能或扩展它。较新的版本允许您使用 0 值来禁用它,如下所示:
BC_LINE_LENGTH=0 bc <<<"2^4096"
旧版本没有“0 关闭”功能,需要您将该值设置为足够大的值,以便它不会影响您:
BC_LINE_LENGTH=10000 bc <<<"2^4096"
如果您经常使用 bc 并且不喜欢换行,那么这似乎是在 shell 中设置的一个很好的环境变量。如果您正在使用bash
,只需将其放入您的.bashrc
:
export BC_LINE_LENGTH=0
答案2
你可以尝试这样的代码:
echo "scale = 4; 3.5678/3" | bc | tr '\n' ' '
设置scale
为bc
应该完成舍入工作。您可以用您想要的命令替换除法部分。的输出bc
再次通过管道传输到tr
,它将换行符 ( \n
) 转换为空格。对于上述命令,我得到以下输出:
1.1892 user@localhost:~/codes$
答案3
$ OUT=$(bc <<< "2 ^ 256")
$ echo "$OUT"
11579208923731619542357098500868790785326998466564056403945758400791\
3129639936
$ OUT=${OUT//$'\\\n'/}
$ echo "$OUT"
115792089237316195423570985008687907853269984665640564039457584007913129639936
答案4
所以也许只是为我自己回答,但一切的结合就是
BC_LINE_LENGTH=10000 bc -l <<< "scale=200;1/3" | tr "\n" " "
例如能源消耗的计算
BC_LINE_LENGTH=10000 bc -l <<< "scale=2;`cat /sys/class/power_supply/BAT1/energy_now`/1000000"