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

时间: 2024-10-25 19:10:00

awk关系操作符的相关文章

linux 下的 正则表达式(awk,sed,awk)学习

一.正则表达式: 正则表达式(或称Regular Expression,简称RE)就是由普通字符(例如字符 a 到 z)以及特殊字符(称为元字符)组成的文字模式. 该模式描述在查找文字主体时待匹配的一个或多个字符串. 正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配.简单的说,正则表示式就是处理字符串的方法,它是以行为单位来进行字符串的处理行为, 正则表示式通过一些特殊符号的辅助,可以让使用者轻易的达到搜寻/删除/取代某特定字符串的处理程序.vim.grep.find.awk.se

awk条件语句

条件语句用于在执行操作之前做一个测试.在前面的章节中,我们看到了模式匹配规则的一些示例.模式匹配规则本质上就是影响输入循环的条件表达式.在这一部分,我们主要就在action中所使用的条件语句进行探讨.条件语句以if开头,并计算放在圆括号中的表达式.语法是: if (expression) action1 [else action2] 如果条件表达式expression的值为真(非零或非空),就执行action1 .当存在else语句时,如果条件表达式的值为假(零或空) ,则执行action2.一

awk(一)基础篇

上一篇总结了下sed的用法,这一篇玩玩sed的好基友awk,学完它俩,以后就再也不用怕处理文本文件了. awk其实和sed处理过程差不多,都是面向字符流的.sed和awk都相当于是一个加工厂,输入的文本行,相当于原材料,原材料在工厂中经过一系列处理.然后输出成品. awk和sed不同的是,awk更加的强大了,基本上可以说大多数sed能够实现的功能,awk都可以实现.... 但是实现相同的功能,大多情况下sed的过程更加的简洁吧. 当然awk还有着更多的功能,awk本身就是一门类C的语言了,有变量

shell脚本(正则表达+sed+awk)

一. 正则表达式:   正则表达式(或称Regular Expression,简称RE)就是由普通字符(例如字符 a 到 z)以及特殊字符(称为元字符)组成的文字模式. 该模式描述在查找文字主体时待匹配的一个或多个字符串. 正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配.简单的说,正则表示式就是处理字符串的方法,它是以行为单位来进行字符串的处理行为, 正则表示式通过一些特殊符号的辅助,可以让使用者轻易的达到搜寻/删除/取代某特定字符串的处理程序.vim.grep.find.awk

awk 指令结构格式

1.确保整个awk命令用单引号括起来2.确保命令内所有引号成对出现3.确保用花括号括起动作语句,用圆括号括起条件语句4.确保动作语句打印的字符串及转义字符用双引号引起来.---------------------------------------------------------------- awk条件操作符 操作符   描述操作符  描述<小于==等于<=大于等于!=不等于>大于~匹配正则表达式>=大于等于!~不匹配正则表达式 awk条件逻辑操作符 操作符 描述&&

三十分钟学会AWK

摘要: 本文大部分内容翻译自我开始学习AWK时看到的一篇英文文章 AWK Tutorial ,觉得对AWK入门非常有帮助,所以对其进行了粗略的翻译,并对其中部分内容进行了删减或者补充,希望能为对AWK感兴趣的小伙伴提供一份快速入门的教程,帮助小伙伴们快速掌握AWK的基本使用方式,当然,我也是刚开始学习AWK,本文在翻译或者补充的过程中肯定会有很多疏漏或者错误,希望大家能够帮忙指正. 本文大部分内容翻译自我开始学习AWK时看到的一篇英文文章 AWK Tutorial ,觉得对AWK入门非常有帮助,

【linux】三十分钟学会AWK

本文大部分内容翻译自我开始学习AWK时看到的一篇英文文章 AWK Tutorial ,觉得对AWK入门非常有帮助,所以对其进行了粗略的翻译,并对其中部分内容进行了删减或者补充,希望能为对AWK感兴趣的小伙伴提供一份快速入门的教程,帮助小伙伴们快速掌握AWK的基本使用方式,当然,我也是刚开始学习AWK,本文在翻译或者补充的过程中肯定会有很多疏漏或者错误,希望大家能够帮忙指正. 本文将会持续修正和更新,最新内容请参考我的 GITHUB 上的 程序猿成长计划 项目,欢迎 Star. 概述 AWK是一门

awk应用技巧

1. awk语言的最基本功能是在文件或字符串中基于指定规则来分解抽取信息,也可以基于指定的规则来输出数据.完整的awk脚本通常用来格式化文本文件中的信息. 2. 三种方式调用awk 1) awk [opion] 'awk_script' input_file1 [input_file2 ...] awk的常用选项option有: ① -F fs : 使用fs作为输入记录的字段分隔符,如果省略该选项,wak使用环境变量IFS的值. ② -f filename : 从文件filename中读取awk

【转载】GAWK AWK工具使用手册

IBM GAWK入门资料http://www.ibm.com/developerworks/cn/education/aix/au-gawk/ AWK 是什么? 最简单地说,AWK 是一种用于处理文本的编程语言工具.AWK 实用工具的语言在很多方面类似于 shell 编程语言,尽管 AWK 具有完全属于其本身的语法.在最初创造 AWK 时,其目的是用于文本处理,并且这种语言的基础是,只要在输入数据中有模式匹配,就执行一系列指令.该实用工具扫描文件中的每一行,查找与命令行中所给定 内容相匹配的模式