转自:http://www.letuknowit.com/topics/20120329/sample-about-awk-build-in-variable-nr-fnr-nf.html
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内建变量FS,NF,NR,RT,RS,ORS,OFS的方法和原理,小编给大家总结了详细的内容,一起来学习下思路。
awk详解awk详解awk详解awk详解awk详解awk详解awk详解awk详解awk详解
awk命令详解以及示例
AWK命令详解 sed命令详解 AWK命令详解 sed命令详 AWK命令详解 sed命令详解解
awk '/101/' file 显示文件file中包含101的匹配行。 awk '/101/,/105/' file awk '$1 == 5' file awk '$1 == "CT"' file 注意必须带双引号 awk '$1 * $2 >100 ' file awk '$2 >5 && $2<=15' file
FNR:也表示当前记录数,但是FNR的作用域只在一个文件内.如果重新打开文件,FNR会从1开始. 二,实例说明 1,测试文件aaa,cccc 代码如下: [root@Blackghost test2]# cat aaa //测试文件aaa 1111:23434:zhang hoadsf:...
内建功能, 使得awk 擅于处理具数据行(Record), 字段(Field) 型态的资料; 此外, awk 内建有pipe 的功能, 可将处理中的数据传送给外部的Shell 命令加以处理, 再 将Shell 命令处理后的数据传回awk 程序, 这个特点也...
AWK中FNR和NR,OFS和FS,RS和ORS.txt
该文档简单描述了一下AWK的内置函数。。。。
awk命令各种用法详解,有案例 awk命令各种用法详解,有案例 awk命令各种用法详解,有案例
awk&sed 详解 shell awk&sed 详解 shell awk&sed 详解 shell awk&sed 详解 shell awk&sed 详解 shell awk&sed 详解 shell
awk命令详解大全,讲解详细,精心编排~带目录
linux awk 内置变量使用介绍.docx
AWK命令详解
linux awk 命令的基本用法,awk 命令详解,强大的awk
AWK用法详解(非常精辟) AWK用法详解(非常精辟)
awk详解
linu awk命令详解 对于喜欢linux学习的爱好者