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