【问题标题】:Grep outputs entire searched fileGrep 输出整个搜索到的文件
【发布时间】:2014-01-16 19:56:03
【问题描述】:

我目前正在尝试解析以下文件类型 (.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

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

【问题讨论】:

  • 您的grep 二进制文件中是否支持grep -A 1
  • 您可能在groupIDs_to_extract.txt 中有一个空行(很可能在文件末尾)。空行表示“匹配所有内容”。
  • 我意识到我的文件实际上并没有像我想象的那样格式化(见我的回答)。但是,是的,我的groupIDs_to_extract.txt 中确实有一个空行。只有一次我修复了这两个问题,所以谢谢!

标签: grep bioinformatics


【解决方案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

如果您使用上下文命令,它会删除 grep 粘贴的 -- 。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-21
    • 1970-01-01
    • 1970-01-01
    • 2017-09-29
    • 2020-10-22
    • 2017-07-30
    相关资源
    最近更新 更多