在awk中怎么使用流程控制语句

这篇文章将为大家详细讲解有关在awk中怎么使用流程控制语句,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

创新互联专注于云安企业网站建设,响应式网站开发,商城网站建设。云安网站建设公司,为云安等地区提供建站服务。全流程定制设计,专业设计,全程项目跟踪,创新互联专业和态度为您提供的服务

在 awk 编程中有各种各样的流程控制语句,其中包括:

  • if-else 语句

  • for 语句

  • while 语句

  • do-while 语句

  • break 语句

  • continue 语句

  • next 语句

  • nextfile 语句

  • exit 语句

然而,对于本系列的这一部分,我们将阐述:if-else、for、while 和 do while 语句。请记住,我们已经在这个 awk 系列的第 6  部分介绍过如何使用 awk 的 next 语句。

1. if-else 语句

如你想的那样。if 语句的语法类似于 shell 中的 if 语句:

if  (条件 1) {      动作 1 } else {       动作 2 }

在上述语法中,条件 1 和条件 2 是 awk 表达式,而动作 1 和动作 2 是当各自的条件得到满足时所执行的 awk 命令。

当条件 1 满足时,意味着它为真,那么动作 1 被执行并退出 if 语句,否则动作 2 被执行。

if 语句还能扩展为如下的 if-else_if-else 语句:

if (条件 1){      动作 1 } else if (条件 2){       动作 2 } else{      动作 3 }

对于上面的形式,如果条件 1 为真,那么动作 1 被执行并退出 if 语句,否则条件 2 被求值且如果值为真,那么动作 2 被执行并退出 if  语句。然而,当条件 2 为假时,那么动作 3 被执行并退出 if 语句。

这是在使用 if 语句的一个实例,我们有一个用户和他们年龄的列表,存储在文件 users.txt 中。

我们要打印一个清单,显示用户的名称和用户的年龄是否小于或超过 25 岁。

aaronkilik@tecMint ~ $ 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

2. for 语句

如果你想在一个循环中执行一些 awk 命令,那么 for 语句为你提供一个做这个的合适方式,格式如下:

for ( 计数器的初始化 ; 测试条件 ; 计数器增加 ){       动作 }

这里,该方法是通过一个计数器来控制循环执行来定义的,首先你需要初始化这个计数器,然后针对测试条件运行它,如果它为真,执行这些动作并最终增加这个计数器。当计数器不满足条件时,循环终止。

在我们想要打印数字 0 到 10 时,以下 awk 命令显示 for 语句是如何工作的:

$ awk 'BEGIN{ for(counter=0;counter<=10;counter++){ print counter} }'

输出样例

0 1 2 3 4 5 6 7 8 9 10

3. while 语句

while 语句的传统语法如下:

while ( 条件 ) {           动作 }

这个条件是一个 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

4. do while 语句

它是上文中 while 语句的一个变型,具有以下语法:

do {      动作 }  while (条件)

这轻微的区别在于,在 do while 语句下,awk 的命令在求值条件之前执行。使用上文 while 语句的例子,我们可以通过按如下所述修改  test.sh 脚本中的 awk 命令来说明 do while 语句的用法:

#!/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中怎么使用流程控制语句
标题路径:http://scyanting.com/article/phdogg.html