七,awk控制语句
作为一种程序设计语言,awk支持程序的流程控制,例如条件判断、循环以及其他的一些流程控制语
句,例如continue、break以及exit等。掌握这些基本的流程控制语句,对于编写出结构良好的程序非常重要。
7,1 if判断语句
if语句的功能是根据用户指定的条件来决定执行程序的哪个分支,其语法如下:
if (expression)
{
statement1
statement..
}
else
{
statementn
statement..
}
示例
awk -F: '{if ($i=="root") printf "%-10s %-15s\n", $1, "Admin"; else printf "%-10s %-15s\n",$1, "common user"}' /etc/passwd
7,2 while语句
while语句是另外一种常用的循环结构,其语法如下:
while (expression)
{
statementl
statement2
...
}
示例
awk 'BEGIN{whi1e(i<=100) {sum+=i;i++}print "sum=",sum}'
awk 'BEGIN;{N=0;while (++N <= 9)print N}'
7,3 for语句
for循环语句通常用在在循环次数已知的场合中,其语法如下:
for(expressionl; expression2; expressions)
{
statementl
statement..
}
示例:
awk 'BEGIN {for(i=l;i<=100;i++){sum+=i;}print "sum=",sum}'
7,4 循环环中的控制
break
用户可以通过使用break语句在适当的时机退出for以及while等循环结构,而不必等到循环结构自己退出
示例:
awk 'BEGIN{for(n=0;nv=9;n++)if(n==4) break;else print n;print "hahah"}'
0
1
2
3
hahah
continue
continue语句的主要功能是跳过循环结构中该语句后面的尚未执行的语句。break语句与continue语句 的功能有着明显的区别,前者是直接退出循环结构,而后者是跳过循环体中尚未执行的语句,重新执行 下一次循环
示例:
awk 'BEGIN{for(n=0;n<=9;n++)if(n==4) continue ;else print n;pri nt "hahah"}'
0
1
2
3
5
6
7
8
9
hahah
next
next语句的功能与continue语句非常相似,但是next语句并不是用在循环结构中,而是用在整个awk程 序中。当awk执行程序时,如果遇到next语句,则提前结束对本行文本的处理,a wk会继续读取下一行
数据,并且从第一个模式及其操作开始执行。
awk -F : '{if($3%2==0) next;print $1,$3}' /etc/passwd
bin 1
adm 3
sync 5
halt 7
operator 11
tss 59
exit
exit语句的功能是终止awk程序的执行
awk 'BEGIN{for(n=0;n<=9;n++)if(n==4) exit ;else print n;print "hahah"}'
0
1
2
3