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
cc
e lembre-se desta cor. Também redefinirac
ea
. - Se o animal não for igual ao que foi lido mais recentemente, incremente
ac
e 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
.