bash – 如何使bc处理科学数据(又名指数)符号?

bc不喜欢以科学符号表示的数字(又称指数符号)。
$ echo "3.1e1*2" | bc -l
(standard_in) 1: parse error

但是我需要使用它来处理以这个符号表示的几个记录。有没有办法让bc了解指数符号?如果没有,我可以做些什么来将它们翻译成bc会理解的格式?

不幸的是,bc不支持科学记数法。

但是,它可以被翻译成bc可以处理的格式,使用sed:
通过使用

value=`echo ${value} | sed -e 's/[eE]+*/\\*10\\^/'`

您可以用“* 10 ^”替换“e”(或“e”,如果指数为正),那么bc会及时了解。即使指数为负,或者数字随后乘以另一个功率,并且允许跟踪有效数字,这也是可行的。

编辑:感谢jwpat7和Paul Tomblin澄清sed语法的方面。

编辑:

正如奥马伊指出的那样,这也可以在纯粹的黑社会中完成。只需使用

value=${value/[eE]+*/*10^}

完成与上述完全相同的操作。

相关文章

用的openwrt路由器,家里宽带申请了动态公网ip,为了方便把2...
#!/bin/bashcommand1&command2&wait从Shell脚本并行...
1.先查出MAMP下面集成的PHP版本cd/Applications/MAMP/bin/ph...
1、先输入locale-a,查看一下现在已安装的语言2、若不存在如...
BashPerlTclsyntaxdiff1.进制数表示Languagebinaryoctalhexa...
正常安装了k8s后,使用kubect工具后接的命令不能直接tab补全...