2013-02-15 86 views
1

在其他文件中比较字符串的记录我要输出具有匹配另一文件的字符串记录使用awk脚本 文件1码输出使用awk脚本

849002|48|1208004|1 
849007|28|1208004|1 
855003|48|1208004|1 
855004|28|1208004|1 
855006|28|1208004|1 

文件2代码:

00990029000000004804470425|ST1400029|0.550|Recurring|1248073|ST1400029 
00990029000000008410517183|IM1450029|1.000|Recurring|855003|ST1400029 
009900290000000000007800612988|IM3350029|1.000|Recurring|1248063|ST1400029 

请注意,855003发生在每个样品的中间行?这就是我要寻找的匹配,输出应该是:

00990029000000008410517183|IM1450029|1.000|Recurring|855003|ST1400029 

因为我想file2中搜索在$ 5文件1 $ 1,如果匹配,那么找到输出线 我试过,但它返回零记录

awk 'NR==FNR{a[$1]=$1;next}a[$5]{print $0}' file2 file1 > outfile 

你的帮助将解决我的问题,我要搜索数据的一长串

回答

3

不要忘记使用-F标志设置分隔符:

awk -F "|" 'FNR==NR { a[$1]; next } $5 in a' file1 file2 

结果:

00990029000000008410517183|IM1450029|1.000|Recurring|855003|ST1400029 
+0

非常感谢它的工作 – Rakesh 2013-02-16 13:39:03

+0

@Rakesh:不要忘了接受,如果它的答案已经为你工作。干杯。 – Steve 2013-02-16 14:49:33

+0

感谢提醒,做到了... – Rakesh 2013-02-16 18:17:18

2

试试这个(没有测试)

awk 'NR==FNR{a[$1];next}$5 in a' file1 file2