Linux awk 循环语句——while 、do while、for 循环、break、continue 和 exit 语句
在本文中,让我们了解一下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 就退出。
- 点赞
- 收藏
- 关注作者
评论(0)