Linux awk 循环语句——while 、do while、for 循环、break、continue 和 exit 语句

举报
Tiamo_T 发表于 2022/02/02 10:35:38 2022/02/02
【摘要】 在本文中,让我们了解一下awk 循环语句——while 、do while、for 循环、break、continue 和 exit 语句以及 7 个实际示例。

在本文中,让我们了解一下awk 循环语句——while 、do while、for 循环、break、continue 和 exit 语句以及 7 个实际示例。

awk 循环语句用于连续一次又一次地执行一组操作。只要条件为真,它就会重复执行一条语句。awk 有许多循环语句,就像“C”编程语言一样。

awk while 循环

Syntax:

while(condition)
	actions
  • while 是一个关键字。
  • continue是条件表达式
  • actions是 while 循环的主体,可以有一个或多个语句。如果动作有多个语句,则必须用大括号括起来。

怎么运行的?— awk while循环首先检查条件,如果条件为真,则执行操作列表。动作执行完成后,再次检查条件,如果为真,则再次执行动作。这个过程重复,直到条件变为假。如果条件在第一次迭代中返回 false,则永远不会执行操作。

1. awk While循环示例:创建特定长度的字符串

$awk 'BEGIN { while (count++<50) string=string "x"; print string }'
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

上面的示例使用 'BEGIN { }' 特殊块,该块在 Awk 程序中的任何其他内容之前执行。在此块中,awk while 循环将字符“x”附加到变量“字符串”50 次。count 是一个变量,它会增加并检查它是否小于 50。因此在 50 次迭代后,此条件变为 false。
循环后,“字符串”变量被打印出来。由于这个 awk 程序没有主体,它在执行 BEGIN 块后退出。

awk Do-While 循环

怎么运行的?– awk Do while循环称为退出控制循环,而 awk while 循环称为入口控制循环。因为 while 循环首先检查条件,然后决定是否执行主体。但是awk do while循环执行一次主体,然后只要条件为真就重复执行主体。

Syntax:

do
action
while(condition)

即使条件为假,在开始时至少执行一次操作。

2. awk Do While 循环示例:至少打印一次消息

$ awk 'BEGIN{
count=1;
do
print "This gets printed at least once";
while(count!=1)
}'
This gets printed at least once

在上面的脚本中,print 语句,至少执行一次,如果使用 while 语句,首先在 count 初始化为 1 后检查条件,第一次迭代本身条件为 false,所以 print 语句不会' t 被执行,但在 do while 第一个主体将被执行,因此它执行 print 语句。


awk for 循环语句

awk for语句与 awk while 循环相同,但语法更易于使用。

Syntax:

for(initialization;condition;increment/decrement)
actions

怎么运行的?— awk for语句从执行初始化开始,然后检查条件,如果条件为真,则执行动作,然后递增或递减。然后只要条件为真,它就重复执行动作,然后递增/递减。

3. awk For 循环示例。打印所有行中的字段总和。

$ awk '{ for (i = 1; i <= NF; i++) total = total+$i }; END { print total }'
12 23 34 45 56
34 56 23 45 23
351

最初变量 i 初始化为 1,然后检查 i 是否小于或等于字段总数,然后继续添加所有字段,最后将添加存储在变量 total 中。在 END 块中只打印变量总计。

4. awk For 循环示例:在每一行以相反的顺序打印字段。

$ awk 'BEGIN{ORS="";}{ for (i=NF; i>0; i--) print $i," "; print "\n"; }' student-marks
77  84  78  2143  Jones
45  58  56  2321  Gondrol
37  38  2122  RinRao
95  97  87  2537  Edwin
47  30  2415  Dayan

我们在上一篇文章中讨论了awk NF 内置变量。处理完每一行后,Awk 将 NF 变量设置为在该行上找到的字段数。

上面的脚本,从 NF 到 1 以相反的顺序循环,并一一输出字段。它从字段 $NF 开始,然后是 $(NF-1),…, $1。之后它会打印一个换行符。

现在让我们看看其他一些可以与循环语句一起使用的语句。

awk 中断语句

Break 语句用于跳出包含它的最内层循环(while、do-while 和 for 循环)。

5. Awk Break 示例:Awk 脚本只经过 10 次迭代

$ awk 'BEGIN{while(1) print "forever"}'

上面的 awk while 循环永远打印字符串“forever”,因为条件永远不会失败。现在,如果您想在前 10 次迭代后停止循环,请参见以下脚本。

$ awk 'BEGIN{
x=1;
while(1)
{
print "Iteration";
if ( x==10 )
break;
x++;
}}'
Iteration
Iteration
Iteration
Iteration
Iteration
Iteration
Iteration
Iteration
Iteration
Iteration

在上面的脚本中,它检查变量“x”的值,如果达到 10 则使用 break 语句跳出循环。

awk 继续声明

继续语句跳过循环体的其余部分,导致循环周围的下一个循环立即开始。

6. awk 继续示例:执行除第 5 次迭代外的循环

$ awk 'BEGIN{
x=1;
while(x<=10)
{
if(x==5){
x++;
continue;
}
print "Value of x",x;x++;
}
}'
Value of x 1
Value of x 2
Value of x 3
Value of x 4
Value of x 6
Value of x 7
Value of x 8
Value of x 9
Value of x 10

在上面的脚本中,它在每次迭代时打印 x 的值,但是如果 x 的值达到 5,那么它只是增加 x 的值,然后继续下一次迭代,它不会执行循环的其余部分,因此不会为值 5 打印 x 的值。只有在循环中使用 with 时,Continue 语句才有意义。

awk 退出语句

Exit 语句使脚本立即停止执行当前输入并停止处理输入,所有剩余的输入都被忽略。

Exit 接受任何整数作为参数,这将是 awk 进程的退出状态代码。如果未提供参数,则退出返回状态零。

7. awk 退出示例:在第 5 次迭代时退出循环

$ awk 'BEGIN{
x=1;
while(x<=10)
{
if(x==5){
exit;}
print "Value of x",x;x++;
}
}'
Value of x 1
Value of x 2
Value of x 3
Value of x 4

在上面的脚本中,一旦 x 的值达到 5,它就会调用 exit,从而停止 awk 进程的执行。所以 x 的值只打印到 4,一旦达到 5 就退出。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。