Algo parecido com isso com awk :
$ awk '$1 != c { cc++; c=$1; ac=0; a="" } $2 != a { ac++; a=$2 } { printf("%d.%d\n", cc, ac) }' file
1.1
1.2
1.3
1.4
2.1
2.2
2.3
3.1
3.2
3.3
3.4
O script awk registra quatro coisas:
- O nome do animal mais lido,
a. - A cor de leitura mais recente,
c. - O "contador de animais",
ac. - O "contador de cores",
cc.
Atualiza essas variáveis dependendo do que é encontrado nas duas colunas de entrada.
- Se a cor não for igual à mais recente, incremente
cce lembre-se desta cor. Também redefiniracea. - Se o animal não for igual ao que foi lido mais recentemente, incremente
ace lembre-se deste animal .
Em seguida, imprima cc e ac para cada linha de entrada.
Se os animais em cada linha forem únicos, você pode se livrar da variável a .