[toc] # Linux運維工程師面試題(1) > 祝各位小伙伴們早日找到自己心儀的工作。 > 持續學習才不會被淘汰。 > 地球不爆炸,我們不放假。 > 機會總是留給有有準備的人的。 > 加油,打工人! ## 1 別名、內部命令、外部命令的執行順序 命令執行尋找順序:別名 > 內部命令 > 外部命 ...
[20230823]dc命令簡單學習.txt
--//dc 作為命令行計算器自己很少使用,找機會學習一下.
--//dc 對比 bc 作為計算器最大的不同的地方是採用Reverse Polish Notation (RPN).又叫逆波蘭表示法,簡單一點就是運算符號在最後
--//,取消了複雜的括弧等優先順序問題.簡化複雜運算.
$ dc --help
Usage: D:\tools\linux\usr\local\wbin\dc.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 [email protected]
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文檔,我也沒看懂表示什麼意思.而且如果計算數據很多會非常慢.