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