在awk中设置FNR值

时间:2011-01-26 11:56:39

标签: bash shell awk

有没有办法可以改变FNR的默认值,然后将其输出到屏幕。

我试过了:

(piped output....) | awk '{FNR=0} {print $0, FNR}'

我希望解决方案可以与NR互换。

4 个答案:

答案 0 :(得分:2)

是的,使用BEGIN

$ awk 'BEGIN {FNR=2} {print $0, FNR}' file.txt
one 3
two 4
three 5
four 6

但是,当输入不是stdin时(即给出文件参数;至少不在GNU awk中),这似乎不起作用。

答案 1 :(得分:2)

为什么不声明自己的offset变量:

(piped output....) |  awk 'BEGIN {offset=2} {print $0, FNR+offset}'

答案 2 :(得分:1)

正确答案是:不要那样做!让FNR独自一人,就是这样。如果你需要一些计数器代表当前文件中目前读取的记录数以外的其他东西,那么只需创建一个计数器来代表它,不要搞砸内置变量的含义。

答案 3 :(得分:0)

$ awk 'FNR > 2 {print $0, FNR}' yourfilename

FNR不一定与NR可互换。如果指定多个文件,FNR会在每个文件之前重新初始化为零。 NR没有。