AWK NR,FNR区别

AWK是Linux中的一个文本处理工具,NR和FNR是两个记录文件记录的参数。其中的差异,下面简单的介绍下。

NR:文件的记录数量,如果是多个文件的话,数量是一直相加。(如果A文件有3条记录,B文件有4条记录,那么NR的值是7)。

FNR:每个文件的数量。(如果A文件有3条记录,B文件有4条记录,那么FNR的值是1 2 3 1 23 4)就是会把每个文件的数量都列出来。

现有两个文件:

cat  stu.txt

小明|001

小红|002

小张|003

cat score.txt

85|001

90|002

95|003

现在输出每个人对应的姓名|学号|成绩(小明|001|85)

awk –F \|  ‘NR==FNR{a[$2]=$0;next} {print a[$2]}”|”$1’stu.txt score.txt

解释说明:

如果NR的值和FNR的值相等的话那么说明匹配的是第一个文件stu.txt,这时候把$2的值作为下标,等到NR!=FNR的时候,就是条件为假的时候,读取第二个文件。此时score.txt的a[$2]会和S1全部输出就是我们所要的匹配了。

你可能感兴趣的:(AWK NR,FNR区别)