Linux基础知识 ·

Linux文本三剑客之awk操作符

[隐藏]

操作符

与其它编程语言一样,AWK 也提供了大量的操作符。这一章节中,我们将结合例子介绍 AWK 操作符的使用方法:

算数运算符

AWK 支持如下的算术运算符:

加法运算符

加法运算由符号 + 表示,它求得两个或者多个数字的和。下面是一个使用示例:

执行上面的命令可以得到如下的结果:

 

减法运算符

减法运算由符号 - 表示,它求得两个或者多个数值的差。示例如下:

执行上面的命令可以得到如下的结果:

乘法运算符

乘法运算由星号( * )表示,它求得两个或者多个数值的乘积。示例如下:

执行上面的命令可以得到如下的结果:

除法运算符

除法运算由斜线( / ) 表示,它求得两个或者两个以上数值的商。示例如下:

执行上面的命令可以得到如下的结果:

模运算符

模运算由百分(%)表示,它表示两个或者多个数进行模除运算得到其余数。下面是示例:

执行上面的命令可以得到如下的结果:

递增运算符与递减运算符

AWK 支持递增运算符与递减运算符:

前置递增运算

前置递增运算由 ++ 表示。它将操作数加 1。这个运算符将操作值增加 1,然后再返回增加后的值。下面的示例中,将操作数 a  值增加 1 后赋值给 b , 最终 a 与 b 的值均为 11 :

执行上面的命令可以得到如下的结果:

前置递减运算符

前置递减运算由 -- 表示。它的语义是将操作数减 1。这个运算符先将操作数的值减 1, 再将被减小后的值返回。下面的示例中将操作数 a 与 b 的值均设置为 9 :

执行上面的命令可以得到如下的结果:

后置递增运算符

后置递增运算由 ++ 表示。它同样将操作数的值加1。与前置递增运算符不同,它先将操作数的值返回,再将操作数的值加 1。下面的示例中会将操作数 a的值设置为10,b 的值设置为11。

执行上面的命令可以得到如下的结果:

后置递减运算符

后置递增运算符由 -- 表示。它同样将操作数的值减1。该操作符先将操作数的值返回,然后将操作数减 1。下面的示例中将操作数 a 的值设置为 9,b 的值设置为10。

执行上面的命令可以得到如下的结果:

赋值操作符

AWK 支持下面这些赋值操作:

简单赋值

简单赋值操作由 = 表示。示例如下:

执行上面的命令可以得到如下的结果:

加法赋值

加法赋值运算符为 +=。下面为示例:

执行上面的命令可以得到如下的结果:

上面的例子中,先给 cnt 变量赋值为 10。再使用加法赋值将 cnt 值增加 10。

减法赋值

减法赋值运算符为 -=。下面为示例:

执行上面的命令可以得到如下的结果:

上面的例子中,先给 cnt 变量赋值为 100。再使用减法赋值运算将 cnt 值减少 10。

乘法赋值

乘法赋值运算符为 *=。下面为示例:

执行上面的命令可以得到如下的结果:

上面的例子中,先给 cnt 变量赋值为 10。再使用乘法赋值运算符将 cnt 值乘以 10。

除法赋值

除法赋值运算符为 /=。下面为示例:

执行上面的命令可以得到如下的结果:

上面的例子中,先将 cnt 变量赋值为 100。再使用乘法赋值运算符将 cnt 值除以 5。

模运算赋值

模运算赋值运算符为 %=。下面为示例:

执行上面的命令可以得到如下的结果:

上面的例子中,先将 cnt 变量赋值为 10。再使用模运算赋值操作将 cnt 值乘以 10。

指数赋值

指数赋值运算符为 ^=。下面为示例:

执行上面的命令可以得到如下的结果:

这个例子求 cnt 的四次幂。

关系运算符

AWK 支持如下关系运算符:

等于

等于运算符为 ==。如果两个操作数相等则返回真,否则返回假。示例如下:

执行上面的命令可以得到如下的结果:

不等于

不等于运算符为 !=。如果两个操作数相等则返回假,否则返回真。示例如下:

执行上面的命令可以得到如下的结果:

小于

小于运算符为 <。如果左操作数小于右操作数据则返回真,否则返回假。示例如下:

执行上面的命令可以得到如下的结果:

小于或等于

小于等于运算符为 <=。如果左操作数小于或等于右操作数据则返回真,否则返回假。示例如下:

执行上面的命令可以得到如下的结果:

大于

大于运算符为 >。如果左操作数大于右操作数则返回真,否则返回假。示例如下:

执行上面的命令可以得到如下的结果:

大于或等于

大于等于运算符为 >=。如果左操作数大于或等于右操作数则返回真,否则返回假。示例如下:

执行上面的命令可以得到如下的结果:

逻辑运算符

AWK 包括如下逻辑运算符:

逻辑与

逻辑与运算符为 &&。下面是逻辑与运算符的语法:

如果 expr1 与 epxr2 均为真,则最终结果为真;否则为假。请注意,只有当 expr1 为真时才会计算 expr2 的值,若 expr1 为假则直接返回真,而不再计算 expr2 的值。下面的例子判断给定的字符串是否是十进制形式:

执行上面的命令可以得到如下的结果:

逻辑或

逻辑或运算符为 ||。该运算符语法如下:

如果 expr1 与 epxr2 至少其中一个为真,则最终结果为真;二者均为假时则为假。请注意,只有当 expr1 为假时才会计算 expr2 的值,若 expr1 为真则不会再计算 expr2 的值。示例如下:

执行上面的命令可以得到如下的结果:

逻辑非

逻辑非运算为感叹号(!)。此运算符语法如下:

逻辑非将 expr1 的真值取反。如果 expr1 为真,则返回 0。否则返回 1。下面的示例判断字符串是否为空:

执行上面的命令可以得到如下的结果:

三元运算符

我们可以使用三元运算符来实现条件表达式。下面为其语法:

当条件表达式( condition expression)为真时,statement1 执行,否则 statement2 执行。下面的示例将返回最大数值:

执行上面的命令可以得到如下的结果:

一元运算符

AWK 支持如下几种一元运算符:

一元加运算

一元加运算符表示为 +。它将操作数乘以 +1。

执行上面的命令可以得到如下的结果:

一元减运算符

一元减运算符为 - 。它表示将操作数乘以 -1。

执行上面的命令可以得到如下的结果:

指数运算符

下面将介绍两种形式的指数运算符:

幂运算符 ^

^ 运算符对操作数执行幂运算。下面的示例求 10 的二次幂。

执行上面的命令可以得到如下的结果:

幂运算符 **

** 运算符对操作数执行幂运算。下面的示例求 10 的二次幂。

执行上面的命令可以得到如下的结果:

字符串连接操作符

空格 (space) 操作符可以完成两个字符串的连接操作。示例如下:

执行上面的命令可以得到如下的结果:

数组成员操作符

数组成员操作符为 in。该操作符用于访问数组元素 。下面的示例用于此操作符输出数组中所有元素。

执行上面的命令可以得到如下的结果:

正则表达式操作符

下面将介绍两种正则表达式操作符:

匹配(Match)

匹配运算符为 ~。它用于搜索包含匹配模式字符串的域。下面的示例中将输出包括 9 的行:

执行上面的命令可以得到如下的结果:

不匹配(Not match)

不匹配操作符为 !~。 此操作符用于搜索不匹配指定字符串的域。如下示例输出不包含 9 的行:

执行上面的命令可以得到如下的结果:

参与评论