1

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

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中搜索file1的$1,如果找到匹配则输出我试过的行,但它返回零记录

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

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

4

2 回答 2

3

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

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

结果:

00990029000000008410517183|IM1450029|1.000|Recurring|855003|ST1400029
于 2013-02-15T16:23:54.140 回答
2

试试这个(没有测试)

awk 'NR==FNR{a[$1];next}$5 in a' file1 file2
于 2013-02-15T16:23:42.813 回答