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全部输出就是我们所要的匹配了。