通过使用awk脚本比较其他文件中的字符串来输出记录

时间:2013-02-15 16:17:09

标签: awk

我想使用awk脚本在另一个文件中输出具有匹配字符串的记录 file1代码

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

file2代码:

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,如果匹配,则输出该行 我尝试了这个,但它返回零记录

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

您的帮助将解决我的问题,我必须搜索长长的数据列表

2 个答案:

答案 0 :(得分:3)

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

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

结果:

00990029000000008410517183|IM1450029|1.000|Recurring|855003|ST1400029

答案 1 :(得分:2)

试试这个(没试过)

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