如何将 grep 与管道一起使用以对 gff 文件中的 uniq 行进行排序
How can I use grep with pipe to sort uniq lines from a gff file
我正在上四年级的生物信息学课程。在当前的作业中,教授给了我们一个 gff 文件,其中人类基因组中的所有 miRNA 基因都注释为 gene-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
但这也没有用。我已经尝试了上述的许多变体,但我不确定下一步该怎么做。
任何人都可以提供任何 help/advice 吗?
您可以使用
grep -o 'gene-MIR[[:alnum:]_]*' file.gff | sort -u > file3
详情:
-o
- 仅输出匹配的文本
gene-MIR[[:alnum:]_]*
- 正则表达式匹配 gene-MIR
然后是任何零个或多个“单词”字符、字母、数字或下划线(因为 \w
不受普遍支持)
sort -u
排序并仅保留唯一条目。
我正在上四年级的生物信息学课程。在当前的作业中,教授给了我们一个 gff 文件,其中人类基因组中的所有 miRNA 基因都注释为 gene-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
但这也没有用。我已经尝试了上述的许多变体,但我不确定下一步该怎么做。
任何人都可以提供任何 help/advice 吗?
您可以使用
grep -o 'gene-MIR[[:alnum:]_]*' file.gff | sort -u > file3
详情:
-o
- 仅输出匹配的文本gene-MIR[[:alnum:]_]*
- 正则表达式匹配gene-MIR
然后是任何零个或多个“单词”字符、字母、数字或下划线(因为\w
不受普遍支持)sort -u
排序并仅保留唯一条目。