如何根据其/ file1(仅)第一列与linux中的file2的匹配信息从file1中提取行?

时间:2016-08-04 01:09:53

标签: linux

我有两个看起来像这样的文件:

plot(age, xlab="Age", ylab="Number of observations")

我想要做的是从文件1中提取那些行,其中第一列与文件2中的第一列相同。因此,基于此示例,输出应为:

file 1:
HO840F3000336240 HOUSAM129901651 HOUSAF132871174 F 20060607 Yes
HO840F3000336251 HOUSAM129800008 HOUSAF135774690 F 20060718 Yes
HO840F3000336254 HOUSAM129901651 HOUSAF135357862 F 20060724 Yes
HO840F3000487279 HOUSAM131520543 HOUSAF135761935 F 20061226 Yes
HOUSAM55967108 HOUSAM53557280 HOUSAF53557285 M 20091129 Yes
HOUSAF55969445 HOUSAM55967108 HOUSAF53579684 F 20120103 Yes

file 2:
HO840F3000336251
HO840F3000487279
HOUSAF135761935
HOUSAM55967108

任何建议?

2 个答案:

答案 0 :(得分:2)

更新:

此命令将创建具有所需输出的file3。经过测试和工作:

cat file1 | grep -f file2 > file3

输出:

HO840F3000336251 HOUSAM129800008 HOUSAF135774690 F 20060718 Yes
HO840F3000487279 HOUSAM131520543 HOUSAF135761935 F 20061226 Yes

它使用grep中的-f开关,该开关采用每行一个模式的文件名。根据{{​​1}}:

man grep

答案 1 :(得分:0)

答案是使用join命令而不是grep。

根据第一列对两个文件进行排序后:

join File1 file2 > file3