我想使用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
您的帮助将解决我的问题,我必须搜索长长的数据列表
答案 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