如何在Awk中使用流控制语句 - 第12部分

当您查看所有到目前为止,我们已经介绍,从一开始的awk的例子 ,你会发现,在不同的例子中的所有命令依次执行,这是一前一后。 但在某些情况下,我们可能需要运行某些 文本滤波操作基于一些条件,即在那里的流量控制语句集的方法。

在Awk中使用流控制语句

有各种流控制语句 ,它们包括:
  1. if-else语句
  2. for语句
  3. while语句
  4. do-while语句
  5. break语句
  6. continue语句
  7. 下一条语句
  8. nextfile语句
  9. 退出语句
然而,对于这一系列的范围,我们将阐述对: if-elseforwhiledo while陈述。 请记住,我们已经通过走进 如何在第6部分使用下面的语句这一点 。

1. if-else语句

所述的预期语法 if statement类似于 if语句壳的:
if  (condition1) {
actions1
}
else {
actions2
}
另外,在上述的语法, condition1condition2都awk的表情,并 actions1actions2是各自的条件成立时执行awk的命令。 当 条件1为满意,这意味着它是真的,那么 actions1被执行 ,if语句退出,否则 actions2被执行。 if语句也可以扩展到 if-else_if-else声明如下:
if (condition1){
actions1
}
else if (conditions2){
actions2
}
else{
actions3
}
对于上面的表格中,如果 条件1为真,则 actions1被执行 ,if语句退出,否则, 条件2被评估,如果它是真的,那么 actions2被执行 ,if语句退出。 然而,当 条件2是假的话 ,actions3被执行 ,if语句退出。 这里是在使用 if语句的点的情况下,我们有 用户和他们的 年龄存储在文件中 ,users.txt的列表。 我们要打印指示用户名称的语句和用户的年龄是否小于或大于 25岁。
aaronkilik@youcl ~ $ cat users.txt
Sarah L			35    	F
Aaron Kili		40    	M
John  Doo		20    	M
Kili  Seth		49    	M    
我们可以写一个简短的shell脚本来执行我们上面的工作,这里是脚本的内容:
#!/bin/bash
awk ' { 
if ( $3 <= 25 ){
print "User",$1,$2,"is less than 25 years old." ;
}
else {
print "User",$1,$2,"is more than 25 years old" ; 
}
}'    ~/users.txt
然后保存文件并退出,使脚本可执行并运行如下:
$ chmod +x test.sh
$ ./test.sh
示例输出
User Sarah L is more than 25 years old
User Aaron Kili is more than 25 years old
User John Doo is less than 25 years old.
User Kili Seth is more than 25 years old

for语句

如果你想执行一些awk的一个循环命令,那么 for语句为您提供一个合适的方式来做到这一点,与下面的语法: 这里,该方法通过使用计数器来控制循环执行来简单地定义,首先需要初始化计数器,然后针对测试条件运行它,如果为真,则执行动作,最后增加计数器。当计数器不满足条件时,循环终止。
for ( counter-initialization; test-condition; counter-increment ){
actions
}
下面的awk命令显示了如何 for语句作品,在这里我们要打印的数字 0-10:
$ awk 'BEGIN{ for(counter=0;counter<=10;counter++){ print counter} }'
示例输出
0
1
2
3
4
5
6
7
8
9
10

while语句

while语句的常规语法如下:
while ( condition ) {
actions
}
条件是Awk表达式,并且操作是当条件为真时执行的Awk命令行。 下面是一个脚本来说明使用 while语句的打印数 0-10:
#!/bin/bash
awk ' BEGIN{ counter=0 ;
while(counter<=10){
print counter;
counter+=1 ;
}
}  
保存文件并使脚本可执行,然后运行它:
$ chmod +x test.sh
$ ./test.sh
示例输出
0
1
2
3
4
5
6
7
8
9
10

do while语句

它是 while语句的变形例以上,具有以下潜在的语法:
do {
actions
}
while (condition) 
略有区别的是,在 做的同时 ,评估条件前,awk的命令执行。 使用下 上述 说法 ,我们可以 同时通过在 test.sh脚本改变awk命令如下说明使用 的非常的例子:
#!/bin/bash
awk ' BEGIN{ counter=0 ;  
do{
print counter;  
counter+=1 ;    
}
while (counter<=10)   
} 
'
修改脚本后,保存文件并退出。然后使脚本可执行并执行如下:
$ chmod +x test.sh
$ ./test.sh
示例输出
0
1
2
3
4
5
6
7
8
9
10

结论

这不是关于awk的流程控制语句一个全面的指南,因为我已经提到早前,也有awk的其他几个 流程控制语句 。 尽管如此,这部分 应该给你如何用awk命令的执行,可以在一定条件下可以控制一个明确的基本理念。 您可以更详细地阐述其余的流控制语句,以获得对主题的更多理解。最后,在Awk系列的下一节中,我们将写入Awk脚本。
赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏