awk 'NR>1 {
count[$1,$2]++;
rows[$1]++;
cols[$2]++;
}
END {
printf("%3s", "");
for (col in cols) {
printf("%4s", col);
}
printf("\n");
for (row in rows) {
printf("%3d", row);
for (col in cols) {
printf(" %3d", count[row,col]);
}
printf("\n");
}
}' data
Não necessariamente eficiente ou elegante, mas deve ser fácil de ler e executar o trabalho. Além disso, as linhas são colunas não serão necessariamente impressas na ordem classificada. A chave é o uso de count[row,col]
para simular uma matriz multidimensional, que não é diretamente suportada no awk. Uma pesquisa do Google por "arrays multidimensionais do awk" exibirá vários artigos, incluindo este .