在 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 区块完成的,实际应用中可能需要根据具体输入数据动态填充数组。