[20230823]dc命令简单学习.txt

  • [20230823]dc命令简单学习.txt已关闭评论
  • 164 次浏览
  • A+
所属分类:linux技术

[20230823]dc命令简单学习.txt

--//dc 作为命令行计算器自己很少使用,找机会学习一下.
--//dc 对比 bc 作为计算器最大的不同的地方是采用Reverse Polish Notation (RPN).又叫逆波兰表示法,简单一点就是运算符号在最后
--//,取消了复杂的括号等优先级问题.简化复杂运算.

$ dc --help
Usage: D:toolslinuxusrlocalwbindc.exe [OPTION]


  -e, --expression=EXPR    evaluate expression
  -f, --file=FILE          evaluate contents of file
  -h, --help               display this help and exit
  -V, --version            output version information and exit

Report bugs to bug-gnu-utils@prep.ai.mit.edu
Be sure to include the word ``dc'' somewhere in the ``Subject:'' field.

D:>dc
 1 3 + pq
4

--//先输入操作的数值,然后输入操作的运算符号,p显示结果.
--//注意一个细节,负数因为要规避减号(-),使用下划线(_)代替.例子:

D:>dc -e "1 -3 - p"
dc: stack empty
-2

$ dc -e "1 _3 - p"
4

--//k表示精度.例子:
$ dc -e "10 k 1 3 /  p"
.3333333333

--//v表示平方根,例子:
D:>dc -e "4 k 4 vp 4.4 vp "
2.0000
2.0976

--//10进制转16进制
$ dc -e "10 i 16 o 123 pq"
7B

--//16进制转10进制,16进制要输入大写,因为前面已经输入16 i ,这样A表示10进制的10.
$ dc -e "16 i A o 7B pq"
123
--//也可以这样执行:
$ dc -e "10 o 16 i 7B pq"
123

--//简单总结,还有许多复杂的表示函数,不过感觉这些就够用了:
k  -> 表示精度
v  -> 表示平方根
_N -> 表示-N
p  -> 表示显示结果
i  ->输入进制
o  ->输出进制
q  -> 表示退出.
--//当然还有许多建议看man 文档。

--//以前的例子,将文本里面的数字累加:
$ cat a.txt
301000.0000
293000.0000
66000.0000
182000.0000
98000.0000
252914.5300
235000.0000
300000.0000
330000.0000

--//使用dc的难点是需要输出多少+.
$ (cat a.txt ; seq $(($(cat a.txt |wc -l ) -1 ))|xargs -I {} echo '+' ;echo pq ) | dc
2057914.5300

--//我找到当时检索到的方法不用计算输入多少加号的方法.
$ cat a.txt | dc -f - -e '[+z1<r]srz1<rp'
2057914.5300

--//-e后面那一串什么意思,即使看了man dc文档,我也没看懂表示什么意思.而且如果计算数据很多会非常慢.