Como contar strings específicas no arquivo?

2

Usando a tabela de hash para contar strings específicas, e ponha um resultado com o tempo, repita.

Arquivo A

AAA
BBB
CCC
DDD
BBB
DDD
AAA
CCC
BBB
AAA
BBB
CCC
BBB

Resultado

AAA 3
BBB 5
CCC 3
DDD 2
    
por JOSS 05.02.2014 / 16:46

3 respostas

4

Isso é lição de casa? Caso contrário, use apenas sort e uniq :

$ sort file | uniq -c
  3 AAA
  5 BBB
  3 CCC
  2 DDD

Se você precisar fazer o script sozinho por algum motivo, você pode usar o Perl:

$ perl -lne '$k{$_}++; END{print "$_\t$k{$_}" for keys(%k)}'
CCC 3
BBB 5
DDD 2
AAA 3

Se você realmente precisa usar um script de shell, você pode fazer (aqui bash ou ksh syntax):

unset num;
typeset -A num; 
while IFS= read -r line; do 
  ((num[$line]++))
done < file
for line in "${!num[@]}"; do 
  printf '%s\t%s\n' "$line" "${num[$line]}"
done
    
por 05.02.2014 / 17:03
3

com o awk:

awk  '{count[$1]++} END {for (string in count) { print string ":" count[string]}}' data

onde data é o nome do seu arquivo

    
por 05.02.2014 / 16:54
-2

Outra possibilidade é

cat file | sort | uniq | wc -l
    
por 05.02.2014 / 17:20