como encontrar o número de palavras repetidas no arquivo por comando?

3

como encontrar o número de palavras repetidas no arquivo no início da frase? por exemplo,

abc bdbdndnvd hddh hcjdhjc  
dgdgd ghcdggcd abc hjdhcj 
abc ghdsgcgdc cdghcgd dhgch 
hshhj hcdhchd hdjchjd 

Saída:

abc 

interessado somente na palavra repetida no arquivo inteiro no começo somente. Se essa palavra em qualquer outro lugar não deveria ser contada. No exemplo acima, abc é repetido duas vezes. Alguém pode me sugerir como posso fazer isso usando o comando? Eu estou usando o Ubuntu 16.04.

    
por Avani badheka 14.03.2017 / 14:49

2 respostas

5

usando cut e uniq

cut -d" " -f1 | sort | uniq -d

O comando cut extrai a primeira palavra de cada linha e sort em combinação com uniq -d imprime apenas as palavras duplicadas.

    
por Wayne_Yux 14.03.2017 / 14:59
4

Usando awk :

awk '{a[]++} END {for (i in a) if (a[i] > 1) print i}'

Isto apenas conta o número de vezes que a primeira palavra na linha ( ) foi vista e salva em uma matriz. Em seguida, apenas faça um loop sobre todos os elementos da matriz vistos até agora e imprima os que apareceram várias vezes.

Claro, eu entrei em um loop de arrays em END . A Steeldriver observa que não preciso:

awk 'a[]++ == 1' file
    
por muru 14.03.2017 / 14:54