五,awk中的运算
5,1基本运算符
运算符 | 说明 |
---|---|
+ | 加法运算 |
- | 减法运算 |
* | 乘法运算 |
/ | 除法运算 |
% | 取模(求余)运算 |
^ | 指数运算 |
示例:
awk 'BEGIN{a=2;b=3;print a+b,a^b,a*b,a/b,a-b,a%b}'
5,2 赋值运算
运算符 | 说明 |
---|---|
= | 赋值运算 |
+= | 表示将前后两个数值相加后的和赋给前面的变量 |
-= | 表示将前后两个数值相减后 的值赋给前面的变量 |
*= | 表示前后两个数的乘积赋给前面的变量 |
/= | 前面的变量表示前后两个数值的商赋给 |
%= | 表示将前面的数值除以后面的数值所得的余数赋给前面的变量 |
^= | 表示将前面的数值的后面数值次方赋给前面的变量 |
示例:
awk 'BEGIN{a=2;print a}'
vim 1eefi1e
l
2
3
awk '{a+=2;print a}' leefile
awk '{a-=2;print a}' leefile
awk '{a*=2;print a}' leefile
awk '{a%=2;print a}' leefile
5,3 条件运算
- awk中的条件运算符只有一个,其语法如下:
expression?valuel:value2
- 这是一个三目运算符,当表达式expression的值为真时,返回值为valuel;否则,返回值为value2
示例:
cat leefile
3 6
10 9
3 3
awk '{max=$1>$2?$1:$2;print NR,"max=",max}' leefile
1 max= 6
2 max= 10
3 max= 3
5,4 逻辑运算符
awk支持3种逻辑运算,分别为逻辑与、逻辑或和逻辑非
运算符 | 说明 |
---|---|
&& | 逻辑与,当前后两个表达式的值全部为真时,其运算结果才为真 |
|| | 逻辑或,前后两个表达式只要有一个为真,则其运算结果为真 |
! | 逻辑非,当表达式的值为真时,其运算结果为假 |
示例:
awk 'BEGIN{ if (2<1 || 3>2 ) print "yes" }'
awk 'BEGIN{ if (1<2 && 3>2 ) print "yes" }'
awk 'BEGIN{ if ((2<4)) print "yes" }'
yes
awk 'BEGIN{ if (!(2<4)) print "yes" }'
5,5 关系运算
运算符 | 说明 |
---|---|
> | 大于 |
>= | 大于或者等于 |
< | 小于 |
<= | 小于或者等于 |
== | 等于 |
!= | 不等于 |
~ | 匹配运算符($1 ~ /^T/表示匹配第一个字段以字符T开头的记录) |
!~ | 不匹配运算符($1 !~/a/表示匹配第一个字段不含有字符a的记录) |
示例:
awk -F : '$7-/bash/{print $0}' passwd
awk -F : '$6!~/home/&&$7~/bash/{print $0}' passwd
awk -F : '$3=="1"{print $0}' passwd
awk -F : '$3!="1"&&/bash/{print $0}' passwd
awk -F : '$3 <= 10 {print $0}' passwd