码迷,mamicode.com
首页 > 其他好文 > 详细

awk关系操作符

时间:2015-06-21 09:27:27      阅读:111      评论:0      收藏:0      [点我收藏+]

标签: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的值,在之后的文章中我们将讨论如何将命令行参数传递给脚本。

参考资料:http://www.linuxawk.com/communication/503.html

awk关系操作符

标签:awk关系操作符

原文地址:http://blog.csdn.net/xiyangyang052/article/details/46575041

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!