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

GAWK 手册(七)

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

第七章 Actions里面的控制叙述

  在 gawk 程式里面,控制叙述诸如 if、while 等控制程式执行的流程。在 gawk 里的控制叙述与 C 的类似。

  很多的控制叙述会包括其它的叙述,被包括的叙述称为 body。假 如 body 里面包括一个以上的叙述,必须以大括弧 { } 将这些叙述括起 来,而各个叙述之间需以换行(newline)或分号隔开。

7.1 if 叙述


if (condition) then-body [else else-body] 
(p30 of 

  如果 condition 为真(true),则执行 then-body,否则执行 else-body。

  举一个例子如下:


if (x % 2 == 0) 
print "x is even" 
else 
print "x is odd" 

7.2 while 叙述


while (condition) 
body 

  while 叙述做的第一件事就是测试 condition。假如 condition 为真则执行 body 的叙述。body 的叙述执行完後,会再测试 condition,假如 condition 为真,则 body 会再度被执行。这个过程会一直被重复直到 condition 不再是真。如果 condition 第一次测试就是伪(false),则 body 从没有被执行。

  下面的例子会印出每个输入记录(record)的前三个栏位。


gawk '{ i=1 
while (i <= 3) { 
print $i 
i++ 
} 
}' 

7.3 do-while 叙述


do 
body 
while (condition) 

  这个 do loop 执行 body 一次,然後只要 condition 是真则会重复执行 body。

(p32 of 

  即使开始时 condition 是伪,body 也会被执行一次。

  下面的例子会印出每个输入记录十次。


gawk '{ i= 1 
do { 
print $0 
i++ 
} while (i <= 10) 
}' 

7.4 for 叙述


for (initialization; condition; increment) 
body 

  此叙述开始时会执行initialization,然後只要 condition是真,它会重复执行body与做increment 。

  下面的例子会印出每个输入记录的前三个栏位。


gawk '{ for (i=1; i<=3; i++) 
print $i 
}' 

7.5 break 叙述

  break 叙述会跳出包含它的 for、while、do-while 回圈的最内层。

  下面的例子会找出任何整数的最小除数,它也会判断是否为质数。


gawk '# find smallest divisor of num 
{ num=$1 
for (div=2; div*div <=num; div++) 
if (num % div == 0) 
break 
if (num % div == 0) 
printf "Smallest divisor of %d is %d ", num, div 
else 
printf "%d is prime ", num }' 

7.6 continue 叙述

(p34 of 46) 

  continue 叙述使用於 for、while、do-while 回圈内部,它会跳过回圈 body 的剩馀部分,使得它立刻进行下一次回圈的执行。

  下面的例子会印出 0 至 20 的全部数字,但是 5 并不会被印出。


gawk 'BEGIN { 
for (x=0; x<=20; x++) { 
if (x==5) 
continue 
printf ("%d",x) 
} 
print "" 
}' 

7.7 next 叙述、next file 叙述、exit 叙述

  next 叙述强迫 gawk 立刻停止处理目前的记录(record)而继续下一个记录。

  next file 叙述类似 next。然而,它强迫 gawk 立刻停止处理目前的资料档。

  exit 叙述会使得 gawk 程式停止执行而跳出。然而,如果 END 出现 ,它会去执行 END 的 actions。




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



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

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