在列中获取唯一值及其计数

我有一个这样的专栏。

Streptococcus Ecoli Bcoli Ecoli streptococcus Streptococcus Mycobacterium Ecoli 

我想要一个这样的文件(包括所有唯一值及其相应的计数)

 Streptococcus 3 Ecoli 3 Bcoli 1 Mycobacterium 1 

有人可以帮助你在ubuntu 12.04中获取它吗?

使用sort和uniq,

 $ sort f | uniq -ci | awk '{print $2,$1}' Bcoli 1 Ecoli 3 Mycobacterium 1 streptococcus 3 

假设每个项目出现在另一行,这是一个python解决方案。 当然,您可以将结果写入文件而不是打印它。

 #!/usr/bin/env python sourcefile = "/path/to/sourcefile" with open(sourcefile, "r") as germ: germ = [item.lower().replace("\n", "") for item in germ.readlines()] for item in sorted(set(germ)): print item.title(), germ.count(item) 

它给:

 Bcoli 1 Ecoli 3 Mycobacterium 1 Streptococcus 3 

使用它

将上面的代码粘贴到一个空的文本文件中,将其保存为get_uniques.py ,使其可执行(为方便起见,如果运行它则不需要键入语言)并通过命令在终端窗口中运行它:

 /path/to/get_uniques.py 

如果您想直接将其写入文件

使用以下代码:

 #!/usr/bin/env python sourcefile = "/path/to/sourcefile" destfile = "/path/to/destinationfile" with open(sourcefile, "r") as germ: germ = [item.lower().replace("\n", "") for item in germ.readlines()] with open(destfile, "wt") as germcount: for item in sorted(set(germ)): germcount.write(item.title()+" "+str(germ.count(item))+"\n")