Adicionar frequência (número de ocorrências) à minha tabela de texto através do awk
Dada esta tabela de entrada:
pac1 xxx
pac1 yyy
pac1 zzz
pac2 xxx
pac2 uuu
pac3 zzz
pac3 uuu
pac4 zzz
Preciso adicionar frequências à terceira coluna como esta:
pac1 xxx 2/3
pac1 yyy 1/3
pac1 zzz 3/3
pac2 xxx 2/2
pac2 uuu 2/2
pac3 zzz 2/2
pac3 uuu 2/2
pac4 zzz 3/1
Onde primeiro número é o número de ocorrências na segunda coluna.
awk '{print $2}' input | sort | uniq -c
E o número após a barra é uniq ocorrências da primeira coluna:
awk '{print $1}' input | sort | uniq -c
Eu gostaria de usar a implementação no awk.
EDITAR:
Modifique a saída - primeira coluna são nomes e preciso contar quantos nomes uniq ocorrem na primeira coluna, como:
pac1 xxx 2/4
pac1 yyy 1/4
pac1 zzz 3/4
pac2 xxx 2/4
pac2 uuu 2/4
pac3 zzz 2/4
pac3 uuu 2/4
pac4 zzz 3/4
Portanto, os nomes uniq são apenas pac1, pac2, pac3, pac4 => 4
Algo assim:
occur=$(awk '{print $1}' input | sort | wc -l)
awk -v occur=$occur '{col2[$2]++} {print $0, col2[$2] "/" occur}' file
A gostaria de evitar que a variável $ ocorra.