### awk中NR和FNR的区别详解与实例演示 在学习awk这一强大的文本处理工具时,了解NR和FNR这两个变量的用法对于高效地进行数据处理尤为重要。本文将详细介绍NR和FNR的区别,并通过实际例子来帮助理解它们各自的功能。 #### 一、NR和FNR的不同之处 **NR**: 表示当前记录数。每当awk读取一行数据时,NR的值就会增加1。无论是在单个文件还是多个文件中,NR都是递增的,不会重置。 **FNR**: 同样表示当前记录数,但它的作用范围仅限于当前文件。当awk处理完一个文件并开始处理下一个文件时,FNR会重新从1开始计数。这意味着即使处理了多个文件,每个文件内部的FNR都会独立计算。 #### 二、实例说明 为了更直观地理解NR和FNR之间的差异,我们通过具体的示例来展示。 ##### 1. 测试文件准备 创建两个测试文件`aaa`和`cccc`,内容如下: ```bash [root@Blackghosttest2]# cat aaa 1111:23434:zhang hoadsf:asdf:ccc [root@Blackghosttest2]# cat cccc 1111:23434:zhang hoadsf:asdf:ccc tank:zhang:x20342 ying:zhasdf:72342 hosa:asdfa:2345sdf ``` ##### 2. 在单个文件中使用NR和FNR 接下来,在单个文件`aaa`中使用NR和FNR,观察其行为: ```bash [root@Blackghosttest2]# awk '{print "NR:", NR; print "FNR:", FNR; print $0;}' aaa NR: 1 FNR: 1 1111:23434:zhang NR: 2 FNR: 2 hoadsf:asdf:ccc ``` 从输出结果可以看出,在处理同一个文件时,NR和FNR的值始终相同且依次递增。 ##### 3. 在多个文件中使用NR和FNR 在处理多个文件(`aaa`和`cccc`)时观察NR和FNR的行为: ```bash [root@Blackghosttest2]# awk '{print "NR:", NR; print "FNR:", FNR; print $0;}' aaa cccc NR: 1 FNR: 1 1111:23434:zhang NR: 2 FNR: 2 hoadsf:asdf:ccc NR: 3 FNR: 1 1111:23434:zhang NR: 4 FNR: 2 hoadsf:asdf:ccc NR: 5 FNR: 3 tank:zhang:x20342 NR: 6 FNR: 4 ying:zhasdf:72342 NR: 7 FNR: 5 hosa:asdfa:2345sdf ``` 在处理多个文件时,NR继续递增,而FNR在每个文件内部重新从1开始计数。这表明NR用于跟踪所有文件中的总行数,而FNR则用于跟踪当前文件内的行数。 #### 总结 通过对NR和FNR的深入解析以及实例演示,我们可以清楚地认识到它们在awk处理文本数据时的重要性和差异性。NR作为全局计数器,适用于跨文件统计行数;而FNR则更加专注于文件内部的行计数,便于进行更为细致的文件内数据处理。掌握这些基础知识有助于提高awk命令的使用效率,从而更好地应对复杂的文本处理任务。

































- 粉丝: 3
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- (源码)基于Arduino平台的颗粒物传感器监测系统.zip
- 近期国际金融基础设施机构区块链技术研究进展及重要观点.docx
- 20XXIT科技互联网年会创意策划案通用课件模板.pptx
- 物联网感知层设计的主要技术要点研究.docx
- 启程自动化培训机构每日一题案例解析三.doc
- 机械设计方案制造及其自动化(汽车工程)专业.doc
- 礼仪修养显个人魅力信息化说课稿.ppt
- 我的毕设-基于知识图谱和循环神经网络的推荐系统
- 根际微生物群落结构与生态功能
- 我国计算机业的发展状况.doc
- 启发式教学法在软件工程课程中的应用.docx
- 基于消费者心理视角网络广告效果评价研究分析.doc
- 影响计算机网络安全的因素及解决措施.docx
- C单片机远程数据采集系统设计方案.doc
- 计算机基础知识题集414道.doc
- 我国高校教育信息化现状及发展策略研究.docx


