在 `awk` 中,for 循环

简介: 在 `awk` 中,for 循环

awk 中,for 循环可以用来遍历数组、序列或者其他需要重复执行一组命令的情况。基本的 for 循环语法如下:

for (initialization; condition; increment/decrement) {
   
    # commands to be executed repeatedly
}
  • initialization: 这个部分通常用于设置循环变量的初始值。
  • condition: 这是一个条件表达式,在每次循环开始前进行测试,如果条件为真,则继续执行循环体内的命令;如果为假,则退出循环。
  • increment/decrement: 每次循环结束时更新循环变量的值。

例如,在 awk 中处理文本文件时,可以使用 for 循环来迭代每一行(字段):

awk '{ 
   for (i = 1; i <= NF; i++) {   # NF 是当前行的字段数
      print $i                   # 打印第i个字段
   }
}' input.txt

另外,在 awk 中,由于其对记录(行)和字段的天然支持,通常会配合内置变量如 NR(当前处理的记录号)或 FNR(在多文件处理时的当前文件的记录号)以及数组来进行更复杂的处理。例如,对于一个二维数组,可以通过双重循环来倒置数据表:

awk '
BEGIN {
   # 初始化二维数组示例
   a[1][1] = "A1"; a[1][2] = "B1";
   a[2][1] = "A2"; a[2][2] = "B2";

   n_rows = 2; n_cols = 2;
} 
END {
   # 倒置二维数组并打印
   for (j = 1; j <= n_cols; j++) {
      for (i = 1; i <= n_rows; i++) {
         printf "%s\t", a[i][j]
      }
      print ""  # 换行
   }
}'

请注意,上述示例中初始化二维数组是在 BEGIN 区块完成的,实际应用中可能需要根据具体输入数据动态填充数组。

目录
相关文章
|
3月前
|
Perl
awk循环处理
awk循环处理
56 8
|
3月前
|
C语言 索引 Perl
在awk中遍历数组
在awk中遍历数组
38 8
|
3月前
|
Perl
`awk` 命令的执行顺序遵循
`awk` 命令的执行顺序遵循
21 2
|
3月前
|
Perl
awk逻辑或 (OR)
awk逻辑或 (OR)
146 3
|
人工智能 BI Perl
|
索引 Perl 存储