NR表示从awk开始执行后,按照记录分隔符读取的数据次数,默认的记录分隔符为换行符,因此默认的就是读取的数据行数,NR可以理解为Number of Record的缩写。

  在awk处理多个输入文件的时候,在处理完第一个文件后,NR并不会从1开始,而是继续累加,因此就出现了FNR,每当处理一个新文件的时候,FNR就从1开始计数,FNR可以理解为File Number of Record。

  NF表示目前的记录被分割的字段的数目,NF可以理解为Number of Field。

下面以示例程序来进行说明,首先准备两个输入文件class1和class2,记录了两个班级的成绩信息,内容分别如下所示:

CodingAnts@ubuntu:~/awk$ cat class1
zhaoyun 85 87
guanyu 87 88
liubei 90 86
CodingAnts@ubuntu:~/awk$ cat class2
caocao 92 87 90
guojia 99 96 92

  现在要查看两个班级的所有成绩信息,并在每条信息前加上行号,则可以使用下面的awk指令;

CodingAnts@ubuntu:~/awk$ awk '{print NR,$0}' class1 class2
1 zhaoyun 85 87
2 guanyu 87 88
3 liubei 90 86
4 caocao 92 87 90
5 guojia 99 96 92

  这里的行号就是通过NR来实现的,awk每读取一条记录,NR的值便加一。如果要求每个班级的行号从头开始变化,则需要使用FNR来实现,如下:

CodingAnts@ubuntu:~/awk$ awk '{print FNR,$0}' class1 class2
1 zhaoyun 85 87
2 guanyu 87 88
3 liubei 90 86
1 caocao 92 87 90
2 guojia 99 96 92

  下面的示例结合awk内建变量FILENAME,显示出来的两个班级的成绩信息可以进行更好的区分;

CodingAnts@ubuntu:~/awk$ awk '{print FILENAME,"NR="NR,"FNR="FNR,"$"NF"="$NF}' class1 class2
class1 NR=1 FNR=1 $3=87
class1 NR=2 FNR=2 $3=88
class1 NR=3 FNR=3 $3=86
class2 NR=4 FNR=1 $4=90
class2 NR=5 FNR=2 $4=92

  除了NR和FNR外,上面的示例中还演示了NF的使用,class1中每行有3个字段,而class2中有4个字段,通过$NF就可以很方便的获取最后一个字段了。

awk内建变量示例详解之NR、FNR、NF相关推荐

  1. linux NR==变量,LINUX中详解AWK内建变量FS,NF,NR,RT,RS,ORS,OFS

    看了网上好多关于AWK内建变量的文章,这里加上个人的理解和记忆,可以让大家掌握这些变量的基本用法. FS 指定字段un列分隔符(Font Space) [~/AWK_learning]$ echo & ...

  2. AWK 内建变量FS,NF,NR,FNR,RT,RS,ORS,OFS

      看了网上好多关于AWK内建变量的文章,这里加上个人的理解和记忆,可以让大家掌握这些变量的基本用法. FS 指定字段列分隔符(Font Space) [~/AWK_learning]$ echo & ...

  3. awk内置字符串函数详解

    awk提供了许多强大的字符串函数,见下表: awk内置字符串函数 gsub(r,s) 在整个$0中用s替代r gsub(r,s,t) 在整个t中用s替代r index(s,t) 返回s中字符串t的第一 ...

  4. mysql内置变量_详解MySQL注入利用的变量

    MySQL注入数据库时,我们可以利用内置的变量来得到更多的mysql信息,下面就让我们一起来了解MySQL注入利用的变量. 当我们注射mysql库的输入点的时候,可以通过version()/user( ...

  5. linux awk命令NR详解,awk命令之NR和FNR变量用法详解

    0.说明 刚好用到awk的NR和FNR这两个内建变量.经过一些测试大概熟悉其用法,这里记录下(本文只是用NR和FNR变量来判断当前读入的是第一个还是第二个文件,好对每个文件分别运行指定的脚本.需要注意 ...

  6. Nginx内置变量以及日志格式变量参数详解

    Nginx内置变量以及日志格式变量参数详解 $args #请求中的参数值 $query_string #同 $args $arg_NAME #GET请求中NAME的值 $is_args #如果请求中有 ...

  7. 西门子触摸屏HMI变量的指针化索引应用示例详解

    西门子触摸屏HMI变量的指针化索引应用示例详解 在实际HMI组态项目时,若有多台相同的设备的参数需要查看或显示时,可以使用变量的指针化索引功能来实现,优点是减少画面上IO域的数量,显示画面更简洁,具体 ...

  8. python实例化是什么意思_Python中实例化class的执行顺序示例详解

    前言 本文主要介绍了关于Python实例化class的执行顺序的相关内容,下面话不多说了,来一起看看详细的介绍吧 Python里对类的实例化时有怎样的顺序 一般来说一个类里面有类变量和方法,比如我们定 ...

  9. ThinkPHP模版引擎之变量输出详解

    ThinkPHP模版引擎之变量输出详解 使用ThinkPHP开发有一定时间了,今日对ThinkPHP的模板引擎变量解析深入了解了一下,做出一些总结,分享给大家供大家参考.具体分析如下: 我们已经知道了 ...

最新文章

  1. cordova flie文件目录_Cordova - 访问www目录下文件(获取www文件夹路径)
  2. 2020-11-25(多级页表的补充)
  3. 神策数据全新改版数据概览,致力打造多角色、多场景的“工作台”
  4. 【Python生成readme文件】——Markdown语法
  5. hdu5279 YJC plays Minecraft 【分治NTT】
  6. iOS-实现验证码倒计时功能(1)
  7. 2194. Excel 表中某个范围内的单元格
  8. 具有动态效果的响应式设计
  9. hibernate 插入 效率_美信半导体:打开工厂边缘智能化新思路,助力工厂效率提升...
  10. phpMyAdmin出现错误 Access denied for user 'root'@'localhost' (using password: NO)
  11. Chart.js报告
  12. ubuntu 安装GPU黑屏 修改GRUB_安装Ubuntu 18.04系统的相关注意事项,及解决Ubuntu 双系统黑屏问题...
  13. web前端 html+css+javascript网页设计实例 家乡网站制作
  14. 施耐德 m340 编程手册_施耐德推出开放自动化平台,开启“软件驱动自动化”时代...
  15. RuntimeError: Unable to open shape_predictor_68_face_landmarks.dat
  16. go语言快速入门:流程控制(7)
  17. 多重积分的理解以及转动惯量的求解
  18. 基于h5的航空订票系统的设计与实现
  19. MYSQL数据库乐观锁之设计version字段
  20. Android Studio简易音乐播放器设计作业

热门文章

  1. Keycloak Spring Security适配器的常用配置
  2. 如何用Java创建ZIP文档?
  3. 今天开始,GitHub将启用main作为默认分支名,master将成为历史!
  4. 四条使用Spring BeanUtils的总结
  5. html网页共用头部和脚部,如何在HTML不同的页面中,共用头部与尾部?_html/css_WEB-ITnose...
  6. unet3 动态分辨率支持
  7. More than one file was found with OS independent path
  8. python opencv 投影变换 黑边
  9. 编译出错libicui18n.so.58: undefined reference to `__cxa_throw_bad_array_new_length@CXXABI_1.3.8‘
  10. python 矩形补正方形