awk中NR与FNR
时间: 2023-11-19 11:49:55 浏览: 45
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开始计数。
awk NR=FNR
在awk中,NR和FNR都是表示当前读取的行号。当NR等于FNR时,表示当前处理的是第一个文件。这通常用于在处理多个文件时,对第一个文件进行特殊操作。例如,可以使用NR==FNR的条件来将第一个文件的内容存储到数组中,然后在处理第二个文件时,根据第一个文件的内容进行操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *3* [awk中的NR FNR](https://blog.csdn.net/weixin_34205076/article/details/86238096)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
- *2* [awk之NR==FNR问题](https://blog.csdn.net/qq_32907195/article/details/118465571)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)