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码顺序比较

其它运算符:

  • [ $ ] :字段引用
  • [ 空格 ] :字符串连接符
  • [ ?: ] :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 %

转载于:https://my.oschina.net/u/3409834/blog/1548757

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值