Linux命令之awk:運算與判斷(三)

運算符優先級表數組

算術運算符:

  • [ + 、- 、* 、/、% ] :加、減、乘、除、取餘
  • [ ^、** ] :冪運算
  • [ ++、– ] :遞增,或遞減

賦值運算:

  • [ =、+=、-=、*=、/= ] :等於、加等於、減等於、乘等於、除等於
  • [ %=、^=、**= ] :取餘賦值、求冪賦值
[root@sxooky ~]# var=6
[root@sxooky ~]# echo |awk '{print v1%5}' v1=$var 
1
[root@sxooky ~]# echo |awk '{print v1/5}' v1=$var 
1.2
[root@sxooky ~]# echo |awk '{print v1*5}' v1=$var 
30
[root@sxooky ~]# echo |awk '{print v1-5}' v1=$var 
1
[root@sxooky ~]# echo |awk '{print v1+5}' v1=$var 
11
[root@sxooky ~]# echo |awk '{print v1+=3}' v1=$var 
9
[root@sxooky ~]# echo |awk '{print v1-=3}' v1=$var 
3
[root@sxooky ~]# echo |awk '{print v1*=3}' v1=$var 
18
[root@sxooky ~]# echo |awk '{print v1/=3}' v1=$var 
2
[root@sxooky ~]# echo |awk '{print v1%=3}' v1=$var 
0
[root@sxooky ~]# echo |awk '{print v1^=3}' v1=$var 
216
[root@sxooky ~]# echo |awk '{print v1**=3}' v1=$var 
216

邏輯運算符:

  • [ || ] :邏輯或
  • [ && ] :邏輯與
  • [ ! ] :邏輯非
[root@sxooky ~]# var1=6
[root@sxooky ~]# var2=4
[root@sxooky ~]# awk 'BEGIN{a=v1*3;b=v2^3;print ( a>20 && b<70)}' v1=$var1 v2=$var2
0
[root@sxooky ~]# awk 'BEGIN{a=v1*3;b=v2^3;print ( a>20 || b<70)}' v1=$var1 v2=$var2
1
[root@sxooky ~]# awk 'BEGIN{a=v1*3;b=v2^3;print ( a<20 && b>70)}' v1=$var1 v2=$var2
0
[root@sxooky ~]# awk 'BEGIN{a=v1*3;b=v2^3;print ( a<20 || b>70)}' v1=$var1 v2=$var2
1
[root@sxooky ~]# awk 'BEGIN{a=v1*3;b=v2^3;print ( a<20 && b<70)}' v1=$var1 v2=$var2
1
[root@sxooky ~]# awk 'BEGIN{a=v1*3;b=v2^3;print ( a<20 || b<70)}' v1=$var1 v2=$var2
1

正則運算符:

  • [ ~、!~ ] :正則匹配、不正則匹配
[root@sxooky ~]# awk 'BEGIN{a="100testnumber";if(a ~ /100*/){print "OK"} else {print "ERROR"}}'
OK
[root@sxooky ~]# awk 'BEGIN{a="100testnumber";if(a !~ /100*/){print "OK"} else {print "ERROR"}}'
ERROR

關係運算符:

  • [ <、>、==、<=、>=、!= ] :小於、大於、等於、小於等於、大於等於、不等於
[root@sxooky ~]# awk 'BEGIN{a=10;if(a>9){print "OK"} else {print "ERROR"}}'
OK
[root@sxooky ~]# awk 'BEGIN{a=10;if(a>=9){print "OK"} else {print "ERROR"}}'
OK
[root@sxooky ~]# awk 'BEGIN{a=10;if(a<9){print "OK"} else {print "ERROR"}}'
ERROR
[root@sxooky ~]# awk 'BEGIN{a=10;if(a<=9){print "OK"} else {print "ERROR"}}'
ERROR
[root@sxooky ~]# awk 'BEGIN{a=10;if(a!=9){print "OK"} else {print "ERROR"}}'
OK
[root@sxooky ~]# awk 'BEGIN{a=10;if(a==9){print "OK"} else {print "ERROR"}}'
ERROR
[root@sxooky ~]# awk 'BEGIN{a=10;if(a==10){print "OK"} else {print "ERROR"}}'
OK

注意:> < 能夠做爲字符串比較,也能夠用做數值比較,關鍵看操做數若是是字符串就會轉換爲字符串比較。兩個都爲數字才轉爲數值比較。字符串比較:按照ASCII碼順序比較bash

其它運算符:

  • [ $ ] :字段引用
  • [ 空格 ] :字符串鏈接符
  • [ ?: ] :C條件表達式
  • [ in ] : 數組中是否存在某鍵值
[root@sxooky ~]# awk 'BEGIN{a="b";print a=="b" ? "OK" : "ERROR"}'
OK
[root@sxooky ~]# awk 'BEGIN{a="b";print a!="b" ? "OK" : "ERROR"}'
ERROR
[root@sxooky ~]# awk 'BEGIN{a="bc";print a!="b" ? "OK" : "ERROR"}'
OK
[root@sxooky ~]# awk 'BEGIN{a="b";arr[0]="b";arr[1]="c";if(a in arr){print "OK"}else{print "ERROR"}}'
ERROR
[root@sxooky ~]# awk 'BEGIN{a="b";arr[0]="b";arr["b"]="c";if(a in arr){print %
相關文章
相關標籤/搜索