千家信息网

AWK中如何使用循环

发表于:2025-01-17 作者:千家信息网编辑
千家信息网最后更新 2025年01月17日,小编给大家分享一下AWK中如何使用循环,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!AWK 是一种处理文本文件的语言,是一
千家信息网最后更新 2025年01月17日AWK中如何使用循环

小编给大家分享一下AWK中如何使用循环,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

AWK 是一种处理文本文件的语言,是一个强大的文本分析工具,在处理文本时经常使用到循环。

while 循环

一个 while 循环检测一个表达式,如果表达式为 true 就执行命令。当表达式变为 false 时,循环中断。

#!/bin/awk -fBEGIN {       # Loop through 1 to 10   i=1;   while (i print i, " to the second power is ", i*i;       i = i+1;   }exit;}

在这个简单实例中,awk 打印了放在变量 i 中的整数值的平方。while (i

#!/usr/bin/awk -fBEGIN {       i=2;       do {               print i, " to the second power is ", i*i;               i = i + 1       }       while (i exit;}

for 循环

awk 中有两种 for 循环。

一种 for 循环初始化一个变量,检测一个测试表达式,执行变量递增,当表达式的结果为 true 时循环就会一直执行。

#!/bin/awk -fBEGIN {   for (i=1; i print i, " to the second power is ", i*i;   }exit;}

另一种 for 循环设置一个有连续索引的数组变量,对每一个索引执行一个命令集。换句话说,它用一个数组"收集"每一条命令执行后的结果。

本例实现了一个简易版的 Unix 命令 uniq。通过把一系列字符串作为键加到数组 a 中,当相同的键再次出现时就增加键值,可以得到某个字符串出现的次数(就像 uniq 的 –count 选项)。如果你打印该数组的所有键,将会得到出现过的所有字符串。

用演示文件 colours.txt(前一篇文章中的文件)来举例:

name       color  amountapple      red    4banana     yellow 6raspberry  red    99strawberry red    3grape      purple 10apple      green  8plum       purple 2kiwi       brown  4potato     brown  9pineapple  yellow 5

这是 awk 版的简易 uniq -c:

#! /usr/bin/awk -fNR != 1 {   a[$2]++}END {   for (key in a) {               print a[key] " " key   }}

示例数据文件的第三列是第一列列出的条目的计数。你可以用一个数组和 for 循环来按颜色统计第三列的条目。

#! /usr/bin/awk -fBEGIN {   FS=" ";   OFS="\t";   print("color\tsum");}NR != 1 {   a[$2]+=$3;}END {   for (b in a) {       print b, a[b]   }}

你可以看到,在处理文件之前也需要在 BEFORE 函数(仅仅执行一次)中打印一列表头。

循环

在任何编程语言中循环都是很重要的一部分,awk 也不例外。使用循环你可以控制 awk 脚本怎样去运行,它可以统计什么信息,还有它怎么去处理你的数据。我们下一篇文章会讨论 switch、continue 和 next 语句。

以上是"AWK中如何使用循环"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

0