了解多次执行同一命令的不同类型的循环
awk脚本有三个主要部分:BEGIN和END函数(都是可选的),以及每次由用户自己编写的函数在某种程度上,awk的主要部分是一个循环,因为函数中的命令对每个记录执行一次。但是,有时您想要在一条记录上执行多个命令,那么您需要使用循环
有许多类型的循环,分别适用于不同的场景
while循环a while循环检测表达式,如果表达式为真,则执行命令当表达式变为false时,循环中断
#!/bin/awk -f在这个简单的示例中,awk打印变量I中的整数值的平方同时(i & lt= 10)语句告诉awk仅当I的值小于或等于10时才执行循环在循环的最后一次执行时(I的值为10),循环终止
do-while循环do-while循环在关键字do之后执行命令在每个周期结束时检测测试表达式,以确定是否终止该周期。只有当测试表达式返回真(即终止循环的条件尚未达到)时,才重复执行该命令如果测试表达式返回false,则循环终止,因为终止循环的条件已经达到。
#!/usr/bin/awk-fawk中有两个for循环
a for循环初始化变量,检测测试表达式,并执行变量增量。当表达式的结果为真时,循环将始终执行
#!/bin/awk -f另一个for循环使用连续索引设置数组变量,并为每个索引执行一个命令集换句话说,它在执行每个命令后使用一个数组来“收集”结果。
本示例实现了一个简单版本的Unix命令uniq通过将一系列字符串作为键添加到数组a,并在相同的键再次出现时增加键值,可以获得字符串出现的次数(就像uniq的- count选项一样)如果你打印数组的所有键,你将得到所有已经出现的字符串。
使用示例文件colours.txt(上一篇文章中的文件)作为示例:
name colormount这是一个简单的uniq-c:
#!/usr/bin/awk -f。= 1 {示例数据文件的第三列是第一列中列出的条目数您可以使用数组和for循环按颜色计算第三列中的条目。
#!/usr/bin/awk -f如您所见,在处理文件之前,您还需要在“之前”功能中打印列表标题(仅一次)。
LoopLoop是任何编程语言中的重要部分,awk也不例外。使用循环,您可以控制awk脚本如何运行,它可以计算哪些信息,以及它如何处理您的数据我们的下一篇文章将讨论切换、继续和下一个语句
via:opensource.com/article/19/11/loops-awk
作者:塞思·肯龙主题:鲁君9972翻译者:lxbwolf校对:wxy
这篇文章最初是由LCTT编写的,Linux中国隆重推出