Obtenha valores exclusivos e suas contagens em uma coluna

1

Eu tenho uma coluna como esta.

Streptococcus
Ecoli
Bcoli
Ecoli
streptococcus
Streptococcus
Mycobacterium
Ecoli

Eu quero um arquivo como este (que inclui todos os valores exclusivos e suas contagens correspondentes)

Streptococcus 3
Ecoli 3
Bcoli 1
Mycobacterium 1

Alguém por favor pode ajudar a consegui-lo no Ubuntu 12.04?

    
por user300658 05.07.2014 / 12:21

2 respostas

2

Usando classificação e uniq,

$ sort f | uniq -ci | awk '{print ,}'
Bcoli 1
Ecoli 3
Mycobacterium 1
streptococcus 3
    
por Avinash Raj 05.07.2014 / 12:23
2

Supondo que cada item apareça em outra linha, aqui está uma solução python. Claro que você pode escrever o resultado em um arquivo em vez de imprimi-lo.

#!/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)

dá:

Bcoli 1
Ecoli 3
Mycobacterium 1
Streptococcus 3

Para usá-lo

cole o código acima em um arquivo de texto vazio, salve-o como get_uniques.py , torne-o executável (por conveniência, para que você não precise digitar o idioma se o executar) e execute-o em uma janela de terminal o comando:

/path/to/get_uniques.py

Caso você queira gravá-lo em um arquivo diretamente

Use o código abaixo:

#!/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")
    
por Jacob Vlijm 05.07.2014 / 14:03