【发布时间】:2014-01-15 17:29:17
【问题描述】:
我想合并两个文件(一个是空格分隔,另一个是制表符分隔),只保留两个文件之间匹配的记录:
文件 1:空格分隔
A B C D E F G H
s e id_234 4 t 5 7 9
r d id_45 6 h 3 9 10
f w id_56 2 y 7 3 0
s f id_67 2 y 10 3 0
文件 2:制表符分隔
I L M N O P
s e 4 u id_67 88
d a 5 d id_33 67
g r 1 o id_45 89
我想将文件 1 字段 3 ("C") 与文件 2 字段 5 ("O") 匹配,并像这样合并文件:
文件 3:制表符分隔
I L M N O P A B D E F G H
s e 4 u id_67 88 s f 2 y 10 3 0
g r 1 o id_45 89 r d 6 h 3 9 10
文件 1 中的条目未出现在文件 2 中,反之亦然,但我只想保留交集(公共 ID)。
我真的不关心订单。
我不希望使用 join,因为这些文件非常大,未排序,并且 join 需要先按公共字段排序,这需要很长时间和大量内存。
我已经尝试过 awk 但没有成功
awk > file3 'NR == FNR {
f2[$3] = $2; next
}
$5 in f2 {
print $0, f2[$2]
}' file2 file1
有人可以帮帮我吗?
非常感谢
【问题讨论】: