行号变量

  • 作者:KK

  • 发表日期:2018.8.8


文件行号FNR

在扫描每一行内容的过程中,我们可以获得一个行号变量,这个变量就是FNR,它是大写的哦,测试脚本(t.awk):

{
    print FNR
}

以上代码只是输出FNR变量,每处理一行都会调用它,运行awk -f t.awk /etc/passwd试试效果,我这边输出以下内容(就是一个个行号):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29

但是如果awk -f t.awk /etc/passwd /etc/passwd这样同时传2个文件路径,就会导致处理第2个文件时又会重新从1数起。


总行号NR

FNR不同的是,这个行号尽管在处理多个文件的情况下也是一直累加的,比如2个文件一共10行,它就从1数到10,而不是在处理第2个文件的时候重新数。


作用

除了在你需要的时候作为行号输出,还能作为数组下标来用,后面会讲到数组知识。