awk内建变量示例详解之NR、FNR、NF
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相关推荐
- linux NR==变量,LINUX中详解AWK内建变量FS,NF,NR,RT,RS,ORS,OFS
看了网上好多关于AWK内建变量的文章,这里加上个人的理解和记忆,可以让大家掌握这些变量的基本用法. FS 指定字段un列分隔符(Font Space) [~/AWK_learning]$ echo & ...
- AWK 内建变量FS,NF,NR,FNR,RT,RS,ORS,OFS
看了网上好多关于AWK内建变量的文章,这里加上个人的理解和记忆,可以让大家掌握这些变量的基本用法. FS 指定字段列分隔符(Font Space) [~/AWK_learning]$ echo & ...
- awk内置字符串函数详解
awk提供了许多强大的字符串函数,见下表: awk内置字符串函数 gsub(r,s) 在整个$0中用s替代r gsub(r,s,t) 在整个t中用s替代r index(s,t) 返回s中字符串t的第一 ...
- mysql内置变量_详解MySQL注入利用的变量
MySQL注入数据库时,我们可以利用内置的变量来得到更多的mysql信息,下面就让我们一起来了解MySQL注入利用的变量. 当我们注射mysql库的输入点的时候,可以通过version()/user( ...
- linux awk命令NR详解,awk命令之NR和FNR变量用法详解
0.说明 刚好用到awk的NR和FNR这两个内建变量.经过一些测试大概熟悉其用法,这里记录下(本文只是用NR和FNR变量来判断当前读入的是第一个还是第二个文件,好对每个文件分别运行指定的脚本.需要注意 ...
- Nginx内置变量以及日志格式变量参数详解
Nginx内置变量以及日志格式变量参数详解 $args #请求中的参数值 $query_string #同 $args $arg_NAME #GET请求中NAME的值 $is_args #如果请求中有 ...
- 西门子触摸屏HMI变量的指针化索引应用示例详解
西门子触摸屏HMI变量的指针化索引应用示例详解 在实际HMI组态项目时,若有多台相同的设备的参数需要查看或显示时,可以使用变量的指针化索引功能来实现,优点是减少画面上IO域的数量,显示画面更简洁,具体 ...
- python实例化是什么意思_Python中实例化class的执行顺序示例详解
前言 本文主要介绍了关于Python实例化class的执行顺序的相关内容,下面话不多说了,来一起看看详细的介绍吧 Python里对类的实例化时有怎样的顺序 一般来说一个类里面有类变量和方法,比如我们定 ...
- ThinkPHP模版引擎之变量输出详解
ThinkPHP模版引擎之变量输出详解 使用ThinkPHP开发有一定时间了,今日对ThinkPHP的模板引擎变量解析深入了解了一下,做出一些总结,分享给大家供大家参考.具体分析如下: 我们已经知道了 ...
最新文章
- 使用 C++ 的 StringBuilder 提升 4350% 的性能
- exp4me 用java做的实用的csv导出程序 - 名传无线.freeness.yang
- jzoj4244-yi【贪心】
- mysql如何保证高可用_mysql怎么保证高可用
- 图解linux启动过程
- java锁包读写锁_java8读写锁如何使用
- 【Elasticsearch】揭秘 Elasticsearch 分片分配
- 审计 6 SSRF和任意文件读取
- 盘点App测试会用到哪些工具
- 计算机搜索栏历史记录,如何打开搜索历史记录
- 没有学过C语言可以学Java吗?
- Scala之特质特质Trait
- 读取文件时内容乱码解决方法
- 对啊英语音标---一、什么是字母的名称音和发音
- python编程价格_Python基础练习实例46(查询价格)
- MongoDB 数据文件损坏修复救命repair与致命危险
- Python中squeeze函数用法
- canvas实现高斯模糊
- python3, 计算两个矩形框是否重叠,并计算重叠度
- jpg图片转ico图片格式
热门文章
- 皮一皮:我也想做这样的房东,善解人意、为他人着想...
- 每日一皮:当你修bug时,是否碰到过这种场景...
- 当当大促的额外优惠来啦!160 买 400的书!搓搓搓~
- java 连连看_java—连连看-实现封装
- CVPR‘22 最新106篇论文分方向整理|包含目标检测、动作识别、图像处理等32个方向
- SCRFD is not in the models registry
- yolov5 ncnn
- python 矩形补正方形
- python 均值漂移
- ImportError: dynamic module does not define module export function