在列中获取唯一值及其计数
我有一个这样的专栏。
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")