Contando elementos exclusivos no arquivo de texto

0

Eu tenho um arquivo de texto contendo tweets de usuários, onde:

470192   anneJackson    Apple's new iPhone is a no go for me
470193   trex90         For something so expensive, I'll go for Android anyway 
470194   anneJackson    What an outrageous pricing!

em que a primeira coluna indica um ID, seguido pelo nome de usuário e pelo tweet do usuário. O que eu quero fazer agora é escrever um comando para contar o número de tweets de cada usuário único, o que me dá algo como:

anneJackson   2
trex          1

Eu tentei algo como:

cut -f 2 Twitter_Data_1 | sort | uniq -c

mas não parece certo, pois estou usando apenas a coluna do usuário, não incluindo o tweet.

    
por Maxxx 17.10.2017 / 16:18

2 respostas

3

É um bom trabalho para o awk :

awk '{ a[$2]++ }END{ for(i in a) printf "%-15s%s\n",i,a[i] }' Twitter_Data_1
  • a[$2]++ - ocorrências de incremento de cada nome de usuário exclusivo (apresentado pelo 2º valor do campo $2 )

A saída:

trex90         1
anneJackson    2
    
por 17.10.2017 / 16:21
2

Supondo que seu arquivo tenha colunas de largura fixa e os espaços entre colunas sejam espaços em branco e não guias,

cut -c 10-24 Twitter_Data_1 | sort | uniq -c

Isso vai te dar

      2 anneJackson    
      1 trex90         

Você não precisa incluir o tweet no seu comando, pois cada linha representa um tweet.

    
por 17.10.2017 / 16:32