awk处理案例五

【场景】--如何根据文件1中的关键字提取文件2中的内容

文件1:

 4238
 4240

文件2

 4237  MY4237A
 4237  MY4237B
 4238  MY4238A
 4238  MY4238B
 4238  MY4238C
 4239  MD4239A
 4240  MY4240A
 4240  MY4240B
 4240  MY4240C
 4240  MD4240A
 4240  MD4240B
 4240  MD4240C

要求根据文件1中的字段1为关键字提取文件2中的内容,输出如下:

 4238  MY4238A
 4238  MY4238B
 4238  MY4238C
 4240  MY4240A
 4240  MY4240B
 4240  MY4240C
 4240  MD4240A
 4240  MD4240B
 4240  MD4240C

【代码】

awk 'NR==FNR{a[$1]=1;next}{if(a[$1]==1)print $0}'  file1 file2

【解析】
  先把文件1中数据存放在数组a中的下标中;意思是把a[4238],a[4240]都等于1;到文件2中的第一列;看哪些a[$1]等于1就打印出来;

【测试结果】

[li0924@localhost awk]$ awk 'NR==FNR{a[$1]=1;next}{if(a[$1]==1)print $0}'  1 2
 4238  MY4238A
 4238  MY4238B
 4238  MY4238C
 4240  MY4240A
 4240  MY4240B
 4240  MY4240C
 4240  MD4240A
 4240  MD4240B
 4240  MD4240C

 

posted @ 2013-09-11 22:40  lottu  阅读(243)  评论(1)    收藏  举报