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)等等。