[20230823]dc命令简单学习.txt
–//dc 作为命令行计算器自己很少使用,找机会学习一下.
–//dc 对比 bc 作为计算器最大的不同的地方是采用Reverse Polish Notation (RPN).又叫逆波兰表示法,简单一点就是运算符号在最后
–//,取消了复杂的括号等优先级问题.简化复杂运算.
$ dc –help
Usage: D:toolslinuxusrlocalwbindc.exe [OPTION] [file …]
-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 ‘[+z12057914.5300
–//-e后面那一串什么意思,即使看了man dc文档,我也没看懂表示什么意思.而且如果计算数据很多会非常慢.