当前位置: 首页 > news >正文

完整教程:第7.9节:awk语言 nextfile 语句

1 第7.9节:awk语言 nextfile 语句

nextfile 语句与 next 语句类似。不过,next 是放弃当前记录的处理,而 nextfile 是指示 awk 停止处理当前数据文件。

执行 nextfile 语句后,FILENAME 会更新为命令行中下一个数据文件的名称,FNR 重置为 1,处理从程序的第一条规则重新开始。如果 nextfile 语句导致输入到达末尾,那么所有 END 规则中的代码会执行。例外情况是在 END 规则内执行 nextfile 语句,此时程序会立即停止。

当有很多数据文件要处理,但无需处理每个文件的每条记录时,nextfile 语句很有用。如果没有 nextfile,要切换到下一个数据文件,程序得继续扫描不需要的记录。nextfile 语句能更高效地实现这一点。

gawk 中,执行 nextfile 还会引发其他操作:如果当前不在 END 规则中,会执行所有 ENDFILE 规则;ARGIND 会递增;如果 ARGIND 尚未引入,还会执行所有 BEGINFILE 规则。

gawk 还有一个特殊的使用场景:在 BEGINFILE 规则内使用 nextfile 可跳过会导致 gawk 因致命错误退出的文件。这种特殊情况下,不会执行 ENDFILE 规则。

虽然看似 close(FILENAME) 能实现与 nextfile 相同的功能,但实际并非如此。close() 是用于关闭通过重定向打开的文件、管道和协进程,与 awk 处理 ARGV 中列出文件的主要流程无关。

注意:多年来,nextfile 是一种常见的扩展功能。2012 年 9 月,它被接纳并纳入 POSIX 标准。

当前版本的 BWK awkmawk 也支持 nextfile 。不过,它们不允许在函数体内使用 nextfile 语句。gawk 允许;函数体内的 nextfile 会读取下一个文件的第一条记录,并从程序的第一条规则开始处理该记录,和其他 nextfile 语句的行为一样。


作者声明:本文用于记录和分享作者的学习心得,可能有部分文字或示例来自AI平台,如:豆包、DeepSeek(硅基流动)(注册链接)等,由于本人水平有限,难免存在表达错误,欢迎留言交流和指教!
Copyright © 2022~2025 All rights reserved.

http://www.jsqmd.com/news/895/

相关文章:

  • Docker - Create my own Ubuntu image and run it on Windows
  • 一类特征方程在数列递推中的应用
  • 深入解析:GC 算法的种类及垃圾收集器
  • rust跨文件调用代码
  • 详细介绍:导师推荐毕设:基于SpringBoot+Vue的中小企业进销存管理系统设计
  • HarmonyOS之UIContext - 实践
  • NIO重构UDP收发模块
  • 深入解析:C语言:猜数字游戏
  • 深入解析:深度学习从入门到精通 - AutoML与神经网络搜索(NAS):自动化模型设计未来
  • 题解:SP6562 PRUBALL - Esferas
  • 个人项目-文本查重
  • 深入解析:[数据结构] LinkedList
  • US$34 MB ESL Emulator
  • 采用python test测试http接口
  • CF2147 Codeforces Global Round 29 (Div. 1 + Div. 2) 解题报告
  • US$29 Vag R250 VW Audi Dashboard Programmer Free Shipping
  • 数字图像基础知识
  • 详细介绍:农业XR数字融合工作站,赋能农业专业实践学习
  • 标题:分享一个值得推荐的免费云服务——阿贝云
  • PPT2Note使用说明
  • 第三周:面向对象入门2与类的识别
  • 详细介绍:Flink-新增 Kafka source 引发状态丢失导致启动失败
  • 【面向接口编程(IOP)典型场景】底层组件如何实现回调通知上层应用系统? 另外一种实现方式
  • GEE训练教程:Sentinel-2卫星影像揭秘飓风奥蒂斯破坏力 - 指南
  • 设置Redis在CentOS7上的自启动配置
  • 挂载配置文件以Docker启动Redis服务
  • abc418d
  • Chapter 6 Joining Images
  • 动态主机配置协议(DHCP)中的中继机制及其配置
  • DDD - 概念复习