Linux 我使用的是正确的命令吗?
我正试图在终端上写一行命令来计算一个非常大的文件中所有唯一的“基因MIR”。“基因MIR”后面是一系列数字,例如基因MIR334223、基因MIR633235、基因MIR53453。。。等,并且有多个相同的“基因MIR”ex。基因MIR342433可能在脚本中显示10倍 我的问题是,如何编写一个命令来注释文件中唯一的“基因MIR” 到目前为止,我一直在使用的命令是:Linux 我使用的是正确的命令吗?,linux,grep,uniq,Linux,Grep,Uniq,我正试图在终端上写一行命令来计算一个非常大的文件中所有唯一的“基因MIR”。“基因MIR”后面是一系列数字,例如基因MIR334223、基因MIR633235、基因MIR53453。。。等,并且有多个相同的“基因MIR”ex。基因MIR342433可能在脚本中显示10倍 我的问题是,如何编写一个命令来注释文件中唯一的“基因MIR” 到目前为止,我一直在使用的命令是: grep-c“gene MIR”myfile.txt|uniq grep“gene MIR”myfile.txt | sort-
grep-c“gene MIR”myfile.txt|uniq
grep“gene MIR”myfile.txt | sort-u
假设所有条目都在单独的行上,请尝试以下操作:
grep "gene-MIR" myfile.txt | sort | uniq -c
grep -o 'gene-MIR[0-9]*' myfile.txt | sort | uniq -c
如果条目与其他文本混淆,并且系统具有GNUgrep
请尝试以下操作:
grep "gene-MIR" myfile.txt | sort | uniq -c
grep -o 'gene-MIR[0-9]*' myfile.txt | sort | uniq -c
要获取总计数,请执行以下操作:
grep -o 'gene-MIR[0-9]*' myfile.txt | wc -l
如果您有以下信息:
Inf1
Inf2
Inf1
Inf2
gene-MIR2334
gene-MIR2334
gene-MIR4232
gene-MIR4232
gene-MIR93284
gene-MIR93284
如果你想知道“inf”类型的数量,你总是需要先对它进行排序。只有在那之后你才能开始计数
编辑
我创建了一个类似的文件,包含请求者评论中提到的示例,如下所示:
Nonsense
gene-MIR4232
gene-MIR2334
gene-MIR93284
gene-MIR4232
gene-MIR2334
gene-MIR93284
More nonsense
Nonsense
gene-MIR4232
gene-MIR2334
gene-MIR93284
gene-MIR2334
gene-MIR2334
gene-MIR93284
More nonsense
在这方面,我应用了两个命令,如问题中所述:
grep -c "gene-MIR" myfile.txt | uniq
结果是6,就像下面的命令一样:
grep -c "gene-MIR" myfile.txt
为什么??这里的问题是“有多少行包含字符串“gene MIR”?”这显然不是所要求的信息 另一个命令也不正确:
grep "gene-MIR" myfile.txt | sort -u
结果是:
gene-MIR2334
gene-MIR4232
gene-MIR93284
说明:grep“gene MIR”…
的意思是:显示包含“gene MIR”的所有行| sort-u
表示:对显示的行进行排序,如果有多个相同的实例,则只显示其中一个
这也不是请求者想要的。因此,我有以下建议:
grep "gene-MIR" myfile.txt | sort | uniq -c
grep "gene-MIR" myfile.txt | sort | uniq -c
结果如下:
2 gene-MIR2334
2 gene-MIR4232
2 gene-MIR93284
3 gene-MIR2334
1 gene-MIR4232
2 gene-MIR93284
1 gene-MIR4232
2 gene-MIR93284
3 gene-MIR2334
我想,这更符合请求者的要求
这是什么意思?
grep“gene MIR”myfile.txt
:仅显示包含“gene MIR”的行|排序
:对显示的行进行排序。像这样,你会得到这样的中间结果:
Inf1
Inf2
Inf1
Inf2
gene-MIR2334
gene-MIR2334
gene-MIR4232
gene-MIR4232
gene-MIR93284
gene-MIR93284
| uniq-c
:将这些结果分组,并显示每个实例的计数
不幸的是,这个例子选错了,因为每个实例恰好发生两次。因此,为了澄清起见,我创建了另一个“myfile.txt”,如下所示:
Nonsense
gene-MIR4232
gene-MIR2334
gene-MIR93284
gene-MIR4232
gene-MIR2334
gene-MIR93284
More nonsense
Nonsense
gene-MIR4232
gene-MIR2334
gene-MIR93284
gene-MIR2334
gene-MIR2334
gene-MIR93284
More nonsense
我再次应用了相同的命令:
结果如下:
2 gene-MIR2334
2 gene-MIR4232
2 gene-MIR93284
3 gene-MIR2334
1 gene-MIR4232
2 gene-MIR93284
1 gene-MIR4232
2 gene-MIR93284
3 gene-MIR2334
在这里,您可以更清楚地看到建议的命令是正确的
。。。你的下一个问题是:“是的,但是有可能对结果进行排序吗?”,我回答:
grep "gene-MIR" myfile.txt | sort | uniq -c | sort -n
结果如下:
2 gene-MIR2334
2 gene-MIR4232
2 gene-MIR93284
3 gene-MIR2334
1 gene-MIR4232
2 gene-MIR93284
1 gene-MIR4232
2 gene-MIR93284
3 gene-MIR2334
玩得开心 请将样本输入(无描述、无图像、无链接)和该样本输入的所需输出添加到您的问题中(无注释)。
grep-c
统计与模式匹配的行数,因此,如果一行包含两次模式,则计数仅增加一次grep
无选项打印与模式匹配的整行,因此根据输入,sort
将看到不相关的上下文。如前所述,您必须显示具有代表性的样本输入。您好!很抱歉误解,我在原始帖子上附上了一张照片,基本上,在图片中你可以看到红色突出显示的区域,我正在尝试为该区域编码“gene-MIR”,我希望它包括“MIR”后面的数字,例如“gene-MIR8061”,并且有相同的倍数,我希望我的命令将其计数一次@这个例子显示了不同的“基因-MIR8061”,后跟-3、-4、-5中的一个;这些被认为是唯一的,并且要单独计算吗?或者忽略每个-3/-4/-5并将它们一起计算?我想忽略-3/-4/-5等,只计算“MIR”示例“gene-MIR8061”后面的数字@MilagInside我的文件是一个由数千个基因组和其他我不需要的信息组成的大型数据集。从数据集中,我需要能够提取出独特的miRNA基因,如基因-MIR4232,基因-MIR2334,基因-MIR93284。。。等等,并得到准确的计数@Dominique@testtubeshawty12:我已经根据你的评论编辑了我的答案。非常感谢!我想就是这样;然而,当我输入命令时,我无法获得它的计数?它只是整理了一下,但没有给我计数@AGC您认为我需要在命令中添加正则表达式,以便它也可以合并“MIR”后面的数字吗@我的天啊,非常感谢你!我刚才做的命令提取了所有唯一的“基因MIR”,后面是一系列数字,有没有办法让命令告诉我到底有多少,或者我需要手动计数@总的来说,几乎有4000多个MIR基因;然而,这些并不是唯一的,因为它们被注释了不止一次,有没有一种方法可以让我得到命令来告诉我到底有多少唯一的“基因MIR”@agc。很抱歉一直困扰@agc。如何更改命令,使其显示所有“gene MIR”,后跟一个单词和/或数字。那么基本上有字母数字值吗?例如“基因-MIR4243FG”。谢谢