Descobrir as strings mais frequentes na seção de arquivo

1

Eu tenho um arquivo assim:

o99 ksad<tab>abcde
$%!H$!(<tab>00
!sdaf as<tab>12
sarwa 
&!§! &% 

(onde <tab> representa um caractere TAB real).

Para esclarecimento: contém duas "colunas", a segunda pode estar totalmente vazia, a primeira pode conter espaços e vários símbolos. Por exemplo, as duas últimas linhas na entrada de amostra acima não contêm nada na segunda coluna. As colunas são separadas por uma guia.

Estou procurando uma maneira de encontrar as strings mais frequentes na primeira coluna. A saída pode ser (preferencialmente) um arquivo que é classificado por essa freqüência ou um arquivo de saída separado listando as sequências numéricas mais frequentes na ordem.

Estou usando o Linux.

    
por user146854 18.12.2015 / 09:14

2 respostas

3
cut -f1 file | sort | uniq -c | sort -rn
  • cut usa TAB como o delimitador de campo padrão; -f1 seleciona o primeiro campo.
  • uniq -c para contar o número de repetições (contíguas),
  • sort -rn para ordenar ordem numérica, invertida.

\ thanks {Jeff Schaller}

    
por 18.12.2015 / 17:23
0

Solução awk obrigatória

awk -F"\t" '{column[$1]++}END{for (var in column) print column[var]"\t"var}' INPUTFILE.txt | sort -nr -k1
    
por 18.12.2015 / 18:06