提取具有特定结尾的行并使用它们从另一个文件中提取

提取具有特定结尾的行并使用它们从另一个文件中提取

我有两个文件,我需要从中提取内容。第一个文件包含条形码行并以 OTU 编号结尾。我需要提取具有特定 OTU 编号的行。

一旦我有了提取行的文件,那么我需要从下一个文件中提取与第一个文件中的条形码匹配的行。

例如,假设我想从此文件中提取包含 OTU_1 的所有行在此输入图像描述

包含 OTU 1 的每一行都有唯一的条形码,在此示例中显示了 5 个:

907.2::M02542:207:000000000-AWDAH:1:1115:18838:201661:N:0:GTGAAA
905.2::M02542:207:000000000-AWDAH:1:1101:24324:103291:N:0:GTGAAA
1205.2::M02542:207:000000000-AWDAH:1:2115:22195:238121:N:0:GTGAAA
906.2::M02542:207:000000000-AWDAH:1:1115:24086:126561:N:0:GTGAAA
910.2::M02542:207:000000000-AWDAH:1:1112:26236:215801:N:0:GTGAAA

我需要使用这些条形码从下一个文件中提取序列:

在此输入图像描述

如您所见,条形码在 > 之后开始,我将需要 > 之间的所有信息(即我的序列)。

我尝试过显而易见的事情,即使用电子表格类型的软件并按 OTU # 排序,但我的文件太大(约数十亿行长)。

答案1

GNU grep,这样的事情应该有效:

grep -o '\S\+\s\+OTU_1$' Fasta.readmap.uc | \
grep -o '^\S\+' | \
grep -f - -A 1 092016MABits-pr.fasta | \
grep -v '^>'

使得仅-o输出grep匹配的文本。告诉-f -我们grep搜索从管道中输入的模式标准输入-A 1告诉我们grep在比赛结束后显示这条线。 Finalgrep只匹配不带 " 的行>”。

相关内容