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

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

我有一个像这样的专栏。

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")

相关内容