Usando classificação e uniq,
$ sort f | uniq -ci | awk '{print ,}'
Bcoli 1
Ecoli 3
Mycobacterium 1
streptococcus 3
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?
Usando classificação e uniq,
$ sort f | uniq -ci | awk '{print ,}'
Bcoli 1
Ecoli 3
Mycobacterium 1
streptococcus 3
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")