【问题标题】:How can I use grep with pipe to sort uniq lines from a gff file如何使用带有管道的 grep 对 gff 文件中的 uniq 行进行排序
【发布时间】:2021-09-25 02:18:25
【问题描述】:

我正在学习第四年的生物信息学课程。在当前的任务中,教授给了我们一个 gff 文件,其中包含人类基因组中的所有 miRNA 基因,注释为基因-MIR。我们应该使用 grep 以及正则表达式和其他命令行工具来生成人类基因组中唯一 miRNA 名称的列表。这似乎相当简单,我知道如何做大部分。但是我无法对文件进行排序并删除重复的行。我们应该在一个命令行中执行此操作,但我无法执行此操作。

这是我用来生成基因-MIR 名称列表的 grep 命令:

grep -Eo "(\gene-MIR)\d*\w*" file.gff

但这只会生成一个包含多个重复的巨大列表。所以我尝试了:

grep -Eo "(\gene-MIR)\d*\w*" file.gff > file2 | sort < file2 | uniq -c > file3

但这也不起作用。我已经尝试了上述的许多变体,但我不确定下一步该做什么。

谁能提供任何帮助/建议?

【问题讨论】:

  • 添加一些样本行(比如 10-20 行,有一些重复)和该样本的预期输出。另外,1)grep -E不支持\d 2)使用grep '..' | sort -u &gt; op_filegrep '..' | sort | uniq -c &gt; op_file(不要在中间创建文件)
  • 请在您的问题中添加示例输入(无描述、无图像、无链接)以及该示例输入所需的输出(无评论)。
  • 试试grep -Po 'gene-MIR\w*' file.gff | sort -u &gt; file3

标签: sorting grep pipe uniq


【解决方案1】:

你可以使用

grep -o 'gene-MIR[[:alnum:]_]*' file.gff | sort -u > file3

详情

  • -o - 仅输出匹配的文本
  • gene-MIR[[:alnum:]_]* - 正则表达式匹配gene-MIR,然后是任何零个或多个“单词”字符、字母、数字或下划线(因为\w 不被普遍支持)
  • sort -u 排序并仅保留唯一条目。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-30
    • 1970-01-01
    • 2015-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-23
    相关资源
    最近更新 更多