gawk的使用方法( 四 )


record)含有 regular expression 就视为符合 。expression
一个单一的 expression 。当一个值不为 0 或一个字串不是空的 ,
则可视为符合 。pat1,pat2
一对的 patterns 以逗号分开 , 指定记录的□围 。BEGIN
END
这是特别的 pattern, gawk 在开始执行或要结束时会分别执行相
对应於BEGIN或END的 action 。null
这是一个空的pattern , 对於每个输入记录皆视为符合pattern 。(p23 of
5.2 Regular Expressions当作Patterns一个 regular expression 可简写为 regexp , 是一种描述字串的方
法 。一个 regular expression 以斜线("/")包围当作 gawk 的 pattern 。如果输入记录含有 regexp 就视为符合 。例如:pattern 为 /foo/ ,
对於任何输入记录含有"foo"则视为符合 。下面的例子会将含有"foo"的输入记录之第2个栏位印出 。gawk "/foo/ {print $2}"" BBS-list结果如下:
555-1234
555-6699
555-6480
555-2127regexp 也能使用在比较的算式 。(p24 of
exp ~ /regexp/
如果 exp 符合 regexp , 则结果为真(true) 。exp !~ /regexp/
如果 exp 不符合 regexp , 则结果为真 。5.3 比较的算式当作Patterns比较的 pattern 用来测试两个数字或字串的关系诸如大於、等於
、小於 。下面列出一些比较的pattern:xx<=y 如果 x 小於、等於 y , 则结果为真 。
x>y 如果 x 大於 y , 则结果为真 。
x>=y 如果 x 大於、等於 y , 则结果为真 。
x==y 如果 x 等於 y , 则结果为真 。
x!=y 如果 x 不等於 y , 则结果为真 。
x~y 如果 x 符合 regular expression y , 则结果为真 。
(p25 of
x!~y 如果 x 不符合 regular expression y , 则结果为真 。上面所提到的 x 与 y , 如果二者皆是数字则视为数字之间的比较 ,
否则它们会被转换成字串且以字串的形式做比较 。两个字串的比较 ,
会先比较第一个字元 , 然後比较第二个字元 , 依此类推 , 直到有不同
的地方出现为止 。如果两个字串在较短的一个结束之前是相等 , 则视
为长的字串比短的字串大 。例如 "10" 比 "9" 小 , "abc" 比 "abcd" 小 。5.4 使用布林运算的Patterns一个布林(boolean) pattern 是使用布林运算"或"() , "及"
(""&&") , "反"("!")来组合其它的pattern 。
例如:gawk "/2400/ && /foo/" BBS-list
gawk "/2400/ || /foo/" BBS-list
gawk "! /foo/" BBS-list第六章 算式(Expression)作为Actions的叙述算式(Expression) 是gawk程式里面action的基本构成者 。6.1 算术运算gawk 里的算术运算如下所示:x y 加
x-y 减
-x 负
x 正 。实际上没有任何影响 。
x*y 乘
x/y 除
x%y 求馀数 。例如 5%3=2 。
x^y
x**y x 的 y 次方 。例如2^3=8 。6.2 比较算式与布林算式比较算式 (comparison expression) 用来比较字串或数字的关系
, 运算符号与 C 语言相同 。表列如下:xx<=y
x>y
x>=y
x==y
x!=y
x~y
x!~y比较的结果为真(true)则其值是 1 。否则其值是 0 。
布林算式(boolean expression)有下面三种:boolean1 && boolean2
boolean1 || boolean2
! boolean6.3 条件算式(Conditional Expressions)一个条件式算式是一种特别的算式 , 它含有3个运算元 。
条件式算式与C语言的相同:selector ? if-true-exp : if-false-exp它有3个子算式 。第一个子算式selector 首先会被计算 。如果是真,
则if-true-exp会被计算且它的值变成整个算式的值 。否则if-false-
exp 会被计算且它的值变成整个算式的值 。例如下面的例子会产生x的绝对值:
x>0 ? x : -x第七章 Actions里面的控制叙述在 gawk 程式里面 , 控制叙述诸如 if、while 等控制程式执行的流
程 。在 gawk 里的控制叙述与 C 的类似 。很多的控制叙述会包括其它的叙述 , 被包括的叙述称为 body 。假

推荐阅读