Grep输出整个搜索文件

时间:2014-01-16 11:35:00

标签: grep bioinformatics

我目前正在尝试解析以下文件类型(.fasta):

>SeqID=0001__GroupID=0001
ATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGC
>SeqID=0002__GroupID=0001
ATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGC
>SeqID=0003__GroupID=0002
ATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGC
>SeqID=0004__GroupID=0003
ATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGC
>SeqID=0005__GroupID=0003
ATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGC
>SeqID=0006__GroupID=0004
ATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGC

按组ID提取序列。我有一个要按以下格式提取的ID文件:

GroupID=0002
GroupID=0003

我一直在使用以下命令:

$ grep -A 1 -f groupIDs_to_extract.txt sequences_file.fasta > output.txt

想法是在输入文本文件中使用每个ID执行grep,并包含以下上下文行以实际提取序列。因此,根据我的示例,输出将是来自第2组和第3组的所有序列:

>SeqID=0003__GroupID=0002
ATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGC
>SeqID=0004__GroupID=0003
ATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGC
>SeqID=0005__GroupID=0003
ATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGC

但是,它只是在最后输出整个sequences_file.fasta,我不知道为什么。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

原来我的文件实际格式如下:

>SeqID=0001__GroupID=0001 ATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGC
>SeqID=0002__GroupID=0001 ATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGC
>SeqID=0003__GroupID=0002 ATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGC
>SeqID=0004__GroupID=0003 ATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGC

我没有注意到我的文本编辑器(gedit)包装了文本,因此它看起来像一个普通的.fasta文件。

我使用正则表达式查找+替换来添加换行符以正确格式化,现在grep按预期工作。

顺便说一下,我改变了命令的结尾:

$ grep -A 1 -f groupIDs_to_extract.txt sequences_file.fasta | grep -v "\--" > output.txt

如果你使用了context命令,它就删除了那个grep。