有什么方法可以改变FNR的默认值,然后将其输出到屏幕上。在awk中设置FNR值
我曾尝试:
(piped output....) | awk '{FNR=0} {print $0, FNR}'
我希望的解决方案将是interhangeable与NR。
有什么方法可以改变FNR的默认值,然后将其输出到屏幕上。在awk中设置FNR值
我曾尝试:
(piped output....) | awk '{FNR=0} {print $0, FNR}'
我希望的解决方案将是interhangeable与NR。
是,通过BEGIN
:
$ awk 'BEGIN {FNR=2} {print $0, FNR}' file.txt
one 3
two 4
three 5
four 6
然而,这似乎不是当输入不stdin
工作(即一个文件指定参数;在GNU AWK至少不是)。
为什么不声明自己offset
变量:
(piped output....) | awk 'BEGIN {offset=2} {print $0, FNR+offset}'
$ awk 'FNR > 2 {print $0, FNR}' yourfilename
FNR不一定与NR互换。如果您指定了多个文件,FNR会在每个文件之前重新初始化为零。 NR没有。
正确的答案是:不要这样做!让FNR独自一人,就是这样。如果您需要一些计数器来表示除当前文件中迄今为止读取的记录数以外的其他计数器,那么只需创建一个计数器来表示该计数器,请勿混淆内置变量的含义。
你是什么意思的默认值? `FNR`是当前输入记录的编号,因此每个记录都会改变。 – 2011-01-26 12:00:50
我相信你可以设置FNR为任何数字,所以你可以从0或2开始,然后从那里增加。 – Kay 2011-01-26 12:03:04
记录号不是基于0的,而是基于1的。 FNR == 1是第一行 – 2011-01-26 12:03:43