6 表达式¶
6.1 常量表达式¶
6.1.1 数字和字符串常量¶
105
"abc"
6.1.2 正则表达式常量¶
if ($0 ~ /barfly/ || $0 ~ /camelot/)
print "found"
6.1.3 自定义的变量¶
awk作为一个编程语言,变量的支持那是必须的啊。
[root@centos74 test]$ awk -v a="test" 'BEGIN{print a}'
test
自定的变量可以使用命令行方式, 也是可以在BEGIN里面去定义。
6.2 使用表示式¶
6.2.1 算数操作¶
awk对算数的支持也是非常完美的
[root@centos74 test]$ vim grades
[root@centos74 test]$ cat grades
Pat 100 97 58
Sandy 84 72 93
Chris 72 92 89
[root@centos74 test]$ awk '{sum=$2+$3+$3; avg=sum/3; print $1,avg}' grades
Pat 98
Sandy 76
Chris 85.3333
6.2.2 字符串操作¶
字符串主要是拼接, 直接写你要拼接的字符串即可。类似bash,不像python语言字符串连接需要连接符就“+” 。
6.2.3 赋值表达式¶
赋值是比较简单的 a=”abd” 即可。
6.2.4 自增表达式¶
这个用法和c语言是一样的。使用’b++’即可完成b变量的自增,
6.3 判定表达式¶
6.3.1 字符串和数值的判定表达式¶
awk中对真假的判定是这样的。 数值类如果是0 就是False, 非0就是True。字符串类如果是没有设置的话就是False,其他为True。
6.3.2 比较判定表达式¶
就是常用大于等于小于这些判定
Note
在字符串比较的时候,是按照首字母比较的,如果相同继续比较下一个字母,而非字母长度比较。
6.3.3 三目表达式¶
直接给样例
[root@centos74 test]$ awk 'BEGIN{a=-1;b= a <=0 ?(++a):a; print b}'
0
[root@centos74 test]$ awk 'BEGIN{a=1;b= a <=0 ?(++a):a; print b}'
1
如果添加成立,就执行第一个语句,否则第二个。 三目表达式本质是一个ifelse语句的简单写法。
6.4 函数¶
awk 内置一些常用函数,比如计算字符串长度(length),去平方根的函数(sqrt)等等。