Aqui está uma solução awk
:
awk '{ s+=$2; if (!(NR%3)) { k++; print k,s; s=0 } };
END { if (NR%3) { k++; print k, s } }' file.txt
Ele ignora a primeira coluna, preferindo gerar em k
como um número de linha de saída. A segunda coluna é somada em s
e a cada três linhas ( (NR % 3) == 0
) é emitida e o acumulador é reconfigurado. Finalmente, se tivermos quaisquer linhas que sobram, apresentamos a soma restante.
Saída do arquivo de exemplo
1 13
2 17
3 7
Apenas para completar, aqui está uma versão DRY que usa uma função para manipular o código repetido do módulo -3 e blocos END:
awk 'function outsum() { print ++k,s; s=0 };
{ s+=$2; if (!(NR%3)) { outsum() } };
END { if (NR%3) { outsum() } }' file.txt