欢迎投稿

今日深度:

awk关系操作符

awk关系操作符


关系操作符和布尔操作符用于在两个表达式之间进行比较。下表列出了关系操作符。
关系操作符

运算符 含义 示例
< 小于 x < y
<= 小于等于 x <= y
== 等于 x == y
!= 不等于 x != y
>= 大于等于 x >= y
> 大于 x > y
~ 与正则表达式匹配 x ~ /y/
!~ 与正则表达式不匹配 x !~ /y/

 

关系表达式可用在模式中来控制特殊的操作。例如,如果我们想限定要处理的记录包含5个字段,则可以用下面的表达式:

NF == 5

这个关系表达式将NF(每个输入记录的字段数)的值和5相比较。如果结果为真,那么就进行相应的处理,否则不进行处理。
注意: 关系操作符"== (相等)"和赋值操作符"= (等于)"是不同的。用"="代替"=="来检测相等性是一个经常犯的错误。

我们可以在试图打印数据库phonelist的记录之前用一个关系表达式来检测。

NF==6 { print $1,$6 }

只有具有6个字段的记录才能被打印。

和"--"相反的是"! = (不相等的)"。同样地,可以比较一个表达式是否大于(>)或小于(<),或大于等于(>=),或小于等于(<=)另一个表达式。如下的表达式:

NR > 1

检测当前记录号是否大于1,在条件表达式的一章,我们看到,关系表达式经常用在if语句中,通过计算来决定是否执行特殊的操作。

正则表达式经常用斜杠包围。这经常被作为正则表达式常量,正如"Hello"是一个字符串常量一样。我们已经看到很多这样例子:

/^$/ { print "This is a blank line." }

然而,也常常不局限于正则表达式常量。当使用关系操作符~(匹配)或! ~ (不匹配)时,右边的表达式可以是awk中的任意表达式; awk将它作为一个字符串并用来指定一个正则表达式。

$5 ~ /MA/ { print $1 ", "$6 }

这个语句是将第五个字段的值与正则表达式"MA"比较。

因为所有的表达式都与~口!~一起使用,因此正则表达式可以用变量来提供。例如,在脚本phonelist中,我们可以用state 来代替"/MA/" ,并编写一个过程来定义state的值。

$5 ~ state { print $1 ", "$6}

这使得程序代码更加通用,因为在脚本执行过程中可以动态改变模式。例如,我们可以从命令行参数得到state的值,在之后的文章中我们将讨论如何将命令行参数传递给脚本。

www.htsjk.Com true http://www.htsjk.com/sybase/19789.html NewsArticle awk关系操作符 关系操作符和布尔操作符用于在两个表达式之间进行比较。下表列出了关系操作符。 关系操作符 运算符 含义 示例 小于 x y = 小于等于 x = y == 等于 x == y != 不等于 x != y...
评论暂时关闭