Ordenar palavras de n linhas

0

Eu preciso imprimir todas as palavras únicas e suas ocorrências das primeiras n linhas em um arquivo de dar. Eu tenho que classificado pelo seu número de ocorrências e, em seguida, em ordem alfabética (o único separador é "") ex: para as 5 linhas seguintes:

hei hei hei hei hei

hello hello

aa aa

b b

a

vou imprimir

hei 5

aa 2

b 2

hello 2

a 1

Até agora, meu roteiro é:

tr -c [:space:] '\n' <$1|head -n $number_of_rows| sort |uniq -c|sort -k1rn -k2n|awk '{print $2,$1}'
    
por gigiman 17.01.2016 / 10:54

1 resposta

1

Se você sabe que cada linha consiste em uma única palavra repetida várias vezes, você pode fazer:

awk -v n=$number_of_rows '
    NR == n+1 {exit} 
    {print $1, NF}
' file | sort -k2,2rn -k1,1
    
por 17.01.2016 / 13:16