假设我有一个参考列表,比如file1.txt
,其中包含:
a
b
c
d
我有file2.txt
,数据文件如下:
a 1 2 3
b 5 6 7
d 6 7 8
e 7 8 9
和output.txt
所需的输出:
a 1 2 3
b 5 6 7
d 6 7 8
我想将file1.txt
中的ID与file2.txt
的第一列匹配,并将整行(file2.txt
行)打印到output.txt
答案 0 :(得分:7)
这是join
的目的:
$ join f1 f2
a 1 2 3
b 5 6 7
d 6 7 8
如果您需要首先sort
您的文件:
join <(sort f1) <(sort f2)
答案 1 :(得分:4)
awk 'FNR==NR{a[$1];next}($1 in a)' file1.txt file2.txt
同样在perl:
perl -F -lane '$h{$F[0]}++;if($h{$F[0]}>=2){print $_;}' file1 file2
注意:如果第一个文件具有唯一ID,则上述perl命令将起作用