shell的数字、字符串处理
1、顯示小數點前的0
由于bc計算器目前還不支持顯示小數點前的0,所以我們要用一用強大的awk工具啦!
例如:
echo?"scale=2;?0.13?+?0.1"?|?bc?|?awk?'{printf?"%.2f",?$0}'
2、表示1~21的命令
echo `seq 1 21`
3、shell 將字符串轉換為數字
例如:a="024"1.用${{a}}
2.用let達到(()) 運算效果。
let num=0123;
echo $num;?
833.雙括號運算符:
a=$((1+2));
echo $a;
等同于:
a=`expr 1 + 2`
echo "2019年8月21日" | tr -cd "[0-9]"
這樣就得到2019821
4、time命令簡介
用于打印出一條命令或一個程序的執行時間
time 命令以秒為單位將一條命令執行期間所用的時間、系統時間和 time 命令的執行時間打印在標準錯誤中time結果由三部分組成:real、user和sys
? ? 有時處于數據處理的需要,我們需要將time的運行結果輸出到文件中,并進行相應的處理,一般情況下都是要得到real的結果,這時如果直接用平時使用的重定向的方法去導入到文件,是不會達到想要的效果;time命令的輸出結果是到stderr的,而不是到stdout,所以重定向的方法需要改變。例如:
(time ls) 2>>out.txt? ?
? >>? 符號是重定向并添加到文件中,也就是文件內容不會進行覆蓋
>? 符號,大家應該猜到了吧,這個達到的效果是直接將前面的內容覆蓋掉
數值之間的比較
>? ?=? ?<? ?>=? ?<=? ?
比較格式: [ num1 比較符 num2 ]? ? 左邊的括號與num1之間有一個空格,num2和右邊的括號之間也有空格。
比較符:
-eq 判斷相等,相等返回true,否則返回false
-ne 判斷是否不相等,不相等返回true,否則返回false
-gt 判斷左邊是否大于右邊的值,大于則返回true,否則返回false
-lt 判斷左邊是否小于右邊的值,小于則返回true,否則返回false
-ge 判斷左邊是否大于或等于右邊的值,大于則返回true,否則返回false
-le 判斷左邊是否小于右邊的值,小于則返回true,否則返回false
小數的比較
1.用bc 對小數進行運算
echo 5.5+1.1 | bc
6.62.強大的awk判斷小數點后的位數
a=5.2130;echo $a | awk '{printf "%.3f", $0}'
5.213
3.用awk比較大小awk -v num1=1 -v num2=0.251 'BEGIN{print(num1>num2)?"0":"1"}'
0
如果num1>num2打印輸出0,否則輸出14.用expr
?a=2.014?b=1.025;expr $a > $b
echo $?
0返回值為0:表示a>b;返回值為1:表示a<b
a=2.014 b=1.025;expr $a \> $b
如果a>b,則輸出為1;如果a<b,則輸出為0
5.使用brecho "6.6>5.5" |br
1返回值為1:表示前者大于后者;返回0:表示后者大于前者
總結
以上是生活随笔為你收集整理的shell的数字、字符串处理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 自动化运维工具Ansible
- 下一篇: 时间同步服务器(默认)chrony和nt