在两个大文件中查找匹配的ID

时间:2016-08-02 17:24:36

标签: awk sed

我有两个大文件。

file1 拥有1.6亿行,格式为:id:email

file2 有4500万行,格式为:id:hash

问题是找到所有相同的 id 并将其保存到第三个文件,格式为:email:hash

尝试过类似的事情:

awk -F':' 'NR==FNR{a[$1]=$2;next} {print a[$1]":"$2}' test1.in test2.in > res.in

但它不起作用:(

示例 file1

9305718:test00@yahoo.com 
59287478:login@hotmail.com

file2的

21367509:e90100b1b668142ad33e58c17a614696ec04474c
9305718:d63fff1d21e1a04c066824dd2f83f3aeaa0edf6e

期望的结果:

test00@yahoo.com:d63fff1d21e1a04c066824dd2f83f3aeaa0edf6e

2 个答案:

答案 0 :(得分:1)

使用GNU join和GNU bash:

join -t : -j 1 <(sort -t : -k1,1 file1) <(sort -t : -k1,1 file2) -o 1.2,2.2

<强>更新

join -t: <(sort file1) <(sort file2) -o 1.2,2.2

答案 1 :(得分:0)

在AWK中(不考虑您可用的资源量):

 var json = getFormData( form, true );