根据两个文件之间的匹配创建一个新文件

时间:2013-05-14 13:37:07

标签: macos unix sed grep

我有两个文件

第一个文件采用这种格式。每行以唯一ID开头(在本例中为P22465)

P22465    DB   DB; EC.31.1.1; the annexin (annexin) group.

第二个文件是这种格式。每行以(某些数字)@ENTREZGENE

开头
309@ENTREZGENE|ANXA6_HUMAN@SWISSPROT|P08133@SWISSPROT|ANXA6:ANXA6|67 kDa calelectrin

30@ENTREZGENE|THIK_HUMAN@SWISSPROT|P22465@SWISSPROT|ACAA1:ACAA1|EC 2.3.1.16

输出应为

30@ENTREZGENE|THIK_HUMAN@SWISSPROT|P22465@SWISSPROT|ACAA1:ACAA1|EC 2.3.1.16

它应与第二个文件中包含唯一ID(P22465)的行匹配,并将整行复制到新文件

1 个答案:

答案 0 :(得分:1)

使用bash

fgrep -f <(awk '{print $1}' file1) file2

这使用流程替换(<(...))。你也可以这样做:

awk '{print $1}' file1 | fgrep -f - file2

这告诉fgrep'从标准输入中读取要匹配的字符串'(-f -)。我没有证实这是有效的,但我希望它能这样做。

您可以使用grep -F代替fgrep(但Mac OS X有fgrep)。

相关问题