awk
solução:
Assumindo o mapa de relações:
(espumante = 1 fino = 2 fortificado = 3 doce = 4 branco = 5 vermelho = 6)
awk -F':' 'BEGIN{ split("sparkling fine fortified sweet white red", words, " ") }
$3 in words{ c[$3]++ }
END{ for(i in words) print words[i]"="c[i] }' file
-
split("sparkling fine fortified sweet white red", words, " ")
- divida a string contendo palavras cruciais na matrizwords
pelo separador" "
(espaço) para que a matriz seja indexada com números consecutivos com palavras como valores (ou seja,words[1]="sparkling" words[2]="fine" ...
) -
$3 in words{ c[$3]++ }
- verifique se o valor do terceiro campo (contendo um dígito) ocorre dentro do arraywords
indices, se sim - conte as correspondências comc[$3]++
A saída:
sparkling=
fine=15
fortified=28
sweet=10
white=23
red=24