我有两个文件,我需要从中提取内容。第一个文件包含条形码行并以 OTU 编号结尾。我需要提取具有特定 OTU 编号的行。
一旦我有了提取行的文件,那么我需要从下一个文件中提取与第一个文件中的条形码匹配的行。
包含 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
只匹配不带 " 的行>”。