2022
我们一起努力

awk双文件互相匹配查找(awk处理两个文件)

说明:蓝色=命令名称


      浅绿=命令参数


      浅蓝=选项


      紫色=目录


      系统环境:CentOS  6.2  i686


要求


文件a: 
10/05766798607,11/20050325191329,29/0.1,14/05766798607 
10/05767158557,11/20050325191329,29/0.08,14/05767158557 


文件b: 
05766798607 
05766798608 
05766798609 
通过文件a和文件b对比,输出结果如下:
10/05766798607,11/20050325191329,29/0.1,14/05766798607


方法:a) awk -F”[/,  ]” ‘{if(NR==FNR){a[$1]}else if($2 in a)print $0}’ b a


650) this.width=650;” border=0>


解析:NR为主体行号,FNR为单位文件行号。{if(NR==FNR){a[$1]} 将b文件中的数据放入数组a,else if($2 in a)print $0}’ 主要是对b文件内容的操作,判断第二个域中数据是否与a数组中的数据匹配,匹配则打印本行。


b)精简法:awk -F”[,/ ]” ‘{a[$1]}{if($2 in a)print $0}’ b a


650) this.width=650;” border=0>


解析:-F”[,/ ]” 用,或/ 做分隔符,'{a[$1]}{if($2 in a)print $0}’ 用第一个域的值作为数组a的下标,判断第二个域是否与数组a(a数组中的有用数据也就为数组a文件中的,即前三行)中的匹配,因为先读入b文件,且b文件中只有一个域,所以此时判断只与a文件有关,最后打印匹配行信息。

本文从互联网转载,来源地址:www.downzz.com/shell/17644.html,原作者保留一切权利,若侵权或引用不当,请联系茶猫云(cmy.cn)删除。【茶猫云,优质云服务器提供商】

赞(0)
文章名称:《awk双文件互相匹配查找(awk处理两个文件)》
文章链接:https://www.fzvps.com/34633.html
本站文章来源于互联网,如有侵权,请联系管理删除,本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。
图片版权归属各自创作者所有,图片水印出于防止被无耻之徒盗取劳动成果的目的。

评论 抢沙发

评论前必须登录!