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

目录
相关文章
|
运维 监控 Linux
云计算运维工程师简历怎么写?带简历案例
云计算运维工程师简历怎么写?带简历案例
2094 0
|
Oracle Java 关系型数据库
在macOS系统中 下载、安装、使用Java8
在macOS系统中 下载、安装、使用Java8
15336 0
在macOS系统中 下载、安装、使用Java8
|
Kubernetes 搜索推荐 前端开发
containerd 镜像构建工具 -- nerdctl 和 buildkit
containerd 镜像构建工具 -- nerdctl 和 buildkit
7628 0
|
SQL 关系型数据库 MySQL
【揭秘】MySQL binlog日志与GTID:如何让数据库备份恢复变得轻松简单?
【8月更文挑战第22天】MySQL的binlog日志记录数据变更,用于恢复、复制和点恢复;GTID为每笔事务分配唯一ID,简化复制和恢复流程。开启binlog和GTID后,可通过`mysqldump`进行逻辑备份,包含binlog位置信息,或用`xtrabackup`做物理备份。恢复时,使用`mysql`命令执行备份文件,或通过`innobackupex`恢复物理备份。GTID模式下的主从复制配置更简便。
1359 2
|
Perl
awk通过 system() 函数调用其他命令获取输出
awk通过 system() 函数调用其他命令获取输出
717 7
|
C语言 索引 Perl
在awk中遍历数组
在awk中遍历数组
291 8
|
XML 机器学习/深度学习 数据格式
YOLOv8训练自己的数据集+常用传参说明
YOLOv8训练自己的数据集+常用传参说明
19804 1
|
负载均衡 网络协议 应用服务中间件
HAProxy 与 NGINX:全面比较
【8月更文挑战第21天】
2171 0
HAProxy 与 NGINX:全面比较
|
消息中间件 JSON 负载均衡
kafka 动态扩容现有 topic 的分区数和副本数
kafka 动态扩容现有 topic 的分区数和副本数
2753 0
|
Shell Linux 网络安全
shell中 << EOF 和 EOF 使用
shell中 << EOF 和 EOF 使用
736 0