awk中 NR 和 NF到底是啥意思? 能举例说明吗?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了awk中 NR 和 NF到底是啥意思? 能举例说明吗?相关的知识,希望对你有一定的参考价值。
if NR==FNR 这个又是什么意思
NR - Number of Record - 当前处理的行是第几行(因为awk是流处理工具,一行一行处理的,所以NR在不停的自增1)FNR - File Number of Record - 当前处理的行是当前处理文件的第几行
NF - Number of Fileds - 当前行有多少列数据(这个在每行都会根据设定的分割符重新计算,默认分割符是任意连续的多个空白符)
(NR==FNR) 大致等效于 (ARGIND==1) , 一般用来判断是不是在处理第一个文件。
但区别是: 前者是判断当前处理的总行数跟文件内行数相等,而这种情况一般都是在第一个文件上,而ARGIND==1是参数位置第1的文件时生效。—— 但,如果前面的文件是空的,那么NR==FNR就生效于第一个非空文件,而ARGIND==1不会。这微妙的区别使它们可以应用于不同的需要。
实际使用中还可以用文件名判断当前处理的是哪一个文件。
上面几种使用的环境: 用awk连续处理多个文件时,比如 awk '命令序列' file1 file2 file* 这样的情况下,判断在处理哪个文件了。 参考技术A 比如现在AWK处理到第五行。第一行没有进行操作,2,3,4,5行进行了操作,那么NR=5,FNR=4
NR==FNR 表示从起始行到当前行,awk都进行了操作,比如修改,添加等等
简单来说,NR就是当前读取多少行,FNR就是当前修改了多少行,FNR<=NR本回答被提问者采纳
以上是关于awk中 NR 和 NF到底是啥意思? 能举例说明吗?的主要内容,如果未能解决你的问题,请参考以下文章