我有一个像这样的专栏。
Streptococcus
Ecoli
Bcoli
Ecoli
streptococcus
Streptococcus
Mycobacterium
Ecoli
我想要一个这样的文件(其中包含所有唯一值及其对应的计数)
Streptococcus 3
Ecoli 3
Bcoli 1
Mycobacterium 1
有人可以帮忙在 ubuntu 12.04 中获取它吗?
答案1
使用 sort 和 uniq,
$ sort f | uniq -ci | awk '{print $2,$1}'
Bcoli 1
Ecoli 3
Mycobacterium 1
streptococcus 3
答案2
假设每一项出现在另一行,这里有一个 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")