Macos 基于两个文件之间的匹配创建新文件

Macos 基于两个文件之间的匹配创建新文件,macos,unix,sed,grep,Macos,Unix,Sed,Grep,我有两份档案 第一个文件是这种格式的。每行以唯一的id开始(在本例中为P22465) 第二个文件是这种格式。每行以(一些数字)@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@E

我有两份档案

第一个文件是这种格式的。每行以唯一的id开始(在本例中为P22465)

第二个文件是这种格式。每行以(一些数字)@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)的行,并使用
bash
将整行复制到新文件中:

fgrep -f <(awk '{print $1}' file1) file2
这告诉
fgrep
从标准输入读取要匹配的字符串”(
-f-
)。我还没有验证这是否有效,但我希望它能这样做


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

很酷。美好的还有什么?:)很好的问题陈述。问题是什么?复制哪一个文件的整行?请添加文件2并输出抱歉造成混淆。请查找已编辑的问题,以便根据第三个字段将第二个文件划分为多个文件。第一个文件是如何涉及的?
fgrep -f <(awk '{print $1}' file1) file2
awk '{print $1}' file1 | fgrep -f - file2