AWK 运算符

awk作为文本处理优秀工具之一,它有独自丰富的运算符。下面我们一起归纳总结一下,所有运算符。 可以分为:算术运算符,赋值运算符,关系运算符,逻辑预算法,正则运算符。

 

一、运算符介绍

运算符描述
赋值运算符
= += -= *= /= %= ^= **=赋值语句
逻辑运算符
||逻辑或
&&逻辑与
正则运算符
~ ~!匹配正则表达式和不匹配正则表达式
关系运算符
< <= > >= != ==关系运算符
算术运算符
+ -加,减
* / &乘,除与求余
+ - !一元加,减和逻辑非
^ ***求幂
++ --增加或减少,作为前缀或后缀
其它运算符
$字段引用
空格字符串连接符
?:C条件表达式
in数组中是否存在某键值

 

说明:awk运算符基本与c语言相同。表达式及功能基本相同

二、实例介绍

  • awk赋值运算符

a+=5; 等价于:a=a+5; 其它同类

  • awk逻辑运算符

[chengmo@localhost ~]$ awk 'BEGIN{a=1;b=2;print (a>5 && b<=2),(a>5 || b<=2);}'
0 1

  • awk正则运算符

[chengmo@localhost ~]$ awk 'BEGIN{a="100testa";if(a ~ /^100*/){print "ok";}}'
ok

  • awk关系运算符

如:> < 可以作为字符串比较,也可以用作数值比较,关键看操作数如果是字符串 就会转换为字符串比较。两个都为数字 才转为数值比较。字符串比较:按照ascii码顺序比较。

[chengmo@localhost ~]$ awk 'BEGIN{a="11";if(a >= 9){print "ok";}}'

 

[chengmo@localhost ~]$ awk 'BEGIN{a=11;if(a >= 9){print "ok";}}' 
ok

  • awk算术运算符

说明,所有用作算术运算符 进行操作,操作数自动转为数值,所有非数值都变为0。

[chengmo@localhost ~]$ awk 'BEGIN{a="b";print a++,++a;}'
0 2

  • 其它运算符

?:运算符

[chengmo@localhost ~]$ awk 'BEGIN{a="b";print a=="b"?"ok":"err";}'
ok

 

in运算符

[chengmo@localhost ~]$ awk 'BEGIN{a="b";arr[0]="b";arr[1]="c";print (a in arr);}'
0

 

[chengmo@localhost ~]$ awk 'BEGIN{a="b";arr[0]="b";arr["b"]="c";print (a in arr);}'
1

in运算符,判断数组中是否存在该键值。



awk 运算符  

2011-10-06 14:42:53|  分类: awk&sed |字号 订阅

 awk 运算符分为:

  算术运算符,赋值运算符,关系运算符,逻辑运算符,正则运算符  

  算术运算符:          

+  -加,减
* / &乘,除与求余
+ - !一元加,减和逻辑非
^  ***求幂
++ --增加或减少,作为前缀或后缀

所有用作算术运算符 进行操作,操作数自动转为数值,所有非数值都变为0

[root@localhost ~]# awk 'BEGIN{a="b";print ++a}'   
1

[root@localhost ~]# awk 'BEGIN{a="b";print a++,++a}'
0 2

[root@localhost ~]# awk 'BEGIN{a="b";print a+2,++a}'
2 1
[root@localhost ~]# awk 'BEGIN{a="b";print a+5,++a}'
5 1

赋值运算符: 

=  +=  -=  *=  /=  %=  ^=  **=

关系运算符:

< <= > >= != ==

[root@localhost ~]# awk 'BEGIN{a="11";if(a>=9){print "OK"}}'
[root@localhost ~]# awk 'BEGIN{a="11";if(a>=9){print "OK"}else {print "not ok"}}'
not ok

[root@localhost ~]# awk 'BEGIN{a=11;if(a>=9){print "OK"}else {print "not ok"}}' 
OK

> < 可以作为字符串比较,也可以用作数值比较,关键看操作数如果是字符串 就会转换为字符串比较。两个都为数字 才转为数值比较字符串比较:按照ascii码顺序比较。

 逻辑运算符:

|| :逻辑或

&& :逻辑与

[root@localhost ~]# awk 'BEGIN{a=1;b=2;print(a>5&&b<=2),(a>5||b<=2)}'
0 1     0为假,1为真

 

正则运算符:

~  :匹配正则表达式

~! :不匹配正则表达式

[root@localhost ~]# awk 'BEGIN{a="100testa";if(a!~/^100/){print "OK"} else print "not ok"}'
not ok
[root@localhost ~]# awk 'BEGIN{a="1100testa";if(a!~/^100/){print "OK"} else print "not ok"}'
OK

 

其它运算符:

?: :C条件表达式

in :数组中是否存在某键值

$ :字段引用

?:  算术运算符

[root@localhost ~]# awk 'BEGIN{a=1;b=2;c=a+b;print c==3?"OK":"err"}'
OK
[root@localhost ~]# awk 'BEGIN{a=1;b=2;c=a+b;print c==4?"OK":"err"}'
err

in运算符:判断数组中是否存在某键值

[root@localhost ~]# awk 'BEGIN{a="b";arr[0]="b";arr[1]="c";print(a in arr)}'

[root@localhost ~]# awk 'BEGIN{a="0";arr[0]="b";arr[1]="c";print(a in arr)}'
1
[root@localhost ~]# awk 'BEGIN{a="b";arr[0]="b";arr["b"]="c";print(a in arr)}' 
1

[root@localhost ~]# awk 'BEGIN{a=b;arr[0]="b";arr["b"]="c";print(a in arr)}' 
0             

加双引号与否的区别?


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值