Linux中国 Linux中国门户站!
设为主页 设为主页
收藏本站 收藏本站
 
当前位置 :首页 ->Linux技术 ->系统管理 ->正文

GAWK 手册(五)

来源:Linux-cn.com 作者:Webmaster 时间:2007-05-05 点击: [收藏] [投稿]

第五章 patterns

  在 gawk 程式里面,当 pattern 符合现在的输入记录(record),其相对应的 action 才会被执行。

5.1 Pattern的种类

  这里对 gawk 的各种 pattern 型式作一整理:


/regular expression/ 
(p22 of 
一个 regular expression 当作一个 pattern。每当输入记录 ( 
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-2127 

  regexp 也能使用在比较的算式。


(p24 of 
exp ~ /regexp/ 

  如果 exp 符合 regexp,则结果为真(true)。


exp !~ /regexp/ 

  如果 exp 不符合 regexp,则结果为真。

5.3 比较的算式当作Patterns

  比较的 pattern 用来测试两个数字或字串的关系诸如大於、等於、小於。下面列出一些比较的pattern:


x<y 如果 x 小於 y,则结果为真。 
x<=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 



 如果您对本文有任何疑问或者建议,请到讨论区发表您的意见: >> 论坛入口 <<



上一篇:GAWK 手册(四)   下一篇:GAWK 手册(六)

文章评论】 【收藏本文】 【推荐好友】 【打印本文】 【我要投稿】 【论坛讨论
更多相关文章
Power by linux-cn.com 粤ICP备05006655号