您的位置 首页 > 数码极客

如何并行读取两个文件流

在awk里,NR和FNR的含义相近,唯一的区别就是作用范围,NR是所有读取的行信息计数,而FNR是正在读取文件的行信息计数,FNR在文件切换时会从0重新开始计数,所以上述语句的意思是:

NR==FNR在判断是不是在读a.txt,如果是a.txt则以第一个数据项为key,以整行信息为数据组成数组;

NR>FNR则判断是不是在读b.txt,因为此时NR=(a.txt的总行数+FNR),如果是,则判断第一个数据项在不在a.txt数据组成的数组里,如果在,则打印本行加数组项。

例子:

o@t /tmp $ cat a.txt

1 abc

2 def

3 ghi

4 jlm

o@t /tmp $ cat b.txt

3 shit

1 rubb

o@t /tmp $ awk 'NR==FNR{a[$1]=$0;next}NR>FNR{if($1 in a)print $0"\n"a[$1]}' a.txt b.txt

3 shit

3 ghi

1 rubb

1 abc

责任编辑: 鲁达

1.内容基于多重复合算法人工智能语言模型创作,旨在以深度学习研究为目的传播信息知识,内容观点与本网站无关,反馈举报请
2.仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证;
3.本站属于非营利性站点无毒无广告,请读者放心使用!

“如何并行读取两个文件流”边界阅读