awk 中NR怎么用的
时间: 2023-12-26 20:05:42 浏览: 124
NR是一个内置变量,表示当前处理的行号。
在awk中,可以使用NR来实现许多功能,例如:
1. 打印文件的行号:
```
awk '{print NR, $0}' file.txt
```
2. 在处理第一行时执行特定操作:
```
awk 'NR==1{print "This is the first line"} {print}' file.txt
```
3. 统计文件的行数:
```
awk 'END{print NR}' file.txt
```
4. 对每N行执行特定操作:
```
awk 'NR%3==0{print "Every third line:", $0}' file.txt
```
总之,NR是一个非常有用的内置变量,在awk中经常被用来处理行号相关的问题。
相关问题
awk中NR与FNR
NR和FNR是awk中的两个内置变量,用于表示当前读取的记录数。它们的区别在于作用域不同。
NR表示整个输入文件中的当前记录数,其变量值从1开始递增,包括所有输入文件。而FNR也表示当前记录数,但其作用域仅限于当前输入文件,当重新打开新的文件时,FNR会重新从1开始计数。
举个例子来说明:
假设有两个文件,文件1的内容为aaa、bbb,文件2的内容为ccc、ddd。使用以下命令进行操作:
awk '{print NR, FNR, $0}' file1 file2
输出结果为:
1 1 aaa
2 2 bbb
3 1 ccc
2 ddd
可以看到,在整个操作中,NR和FNR的值不同。NR从1开始递增,而FNR在每个文件中从1重新开始计数。
awk中的NR和FNR
在awk中,NR和FNR都是内置变量,用于表示当前记录数。它们的区别在于作用域不同。
1. NR表示当前记录数,它从awk开始执行时开始计数,每读取一个记录就加1。它的作用域跨越所有的输入文件,即NR会累计计数所有输入文件中的记录数。
2. FNR也表示当前记录数,但是它的作用域只在当前文件内。当awk打开一个新文件时,FNR会从1开始重新计数。因此,FNR只计数当前文件中的记录数。
下面是一个示例,演示了awk中NR和FNR的用法:
假设有两个文件,文件1.txt和文件2.txt,内容如下:
文件1.txt:
```
apple
banana
```
文件2.txt:
```
orange
grape
```
使用awk命令统计每个文件中的记录数和总记录数:
```shell
awk 'BEGIN{print "文件名\tNR\tFNR"} {print FILENAME "\t" NR "\t" FNR}' 文件1.txt 文件2.txt
```
输出结果:
```
文件名 NR FNR
文件1.txt 1 1
文件1.txt 2 2
文件2.txt 3 1
文件2.txt 4 2
```
可以看到,NR表示总记录数,FNR表示当前文件内的记录数。在文件1.txt中,NR和FNR的值相同,而在文件2.txt中,FNR重新从1开始计数。
阅读全文