$ awk 'NR > 1 { k = substr($2, 4); cnt[k] += $1 } { print } END { print "\nTOTAL:"; for (k in cnt) print cnt[k], k }' file
No.ofRecord FileName delimiter
563394 1--UnixfileName.txt 28
364794 2--UnixfileName.txt 28
785895 3--UnixfileName.txt 28
99778453 1--NextUnixFileName.txt 18
95645453 2--NextUnixFileName.txt 18
99745313 3--NextUnixFileName.txt 18
TOTAL:
1714083 UnixfileName.txt
295169219 NextUnixFileName.txt
O script awk
resume a primeira coluna com base em uma chave k
, que é considerada a segunda coluna do seu quarto caractere em diante. Isso é feito para toda a linha de entrada do arquivo, exceto a primeira (que é um cabeçalho). Todas as linhas de entrada são transmitidas sem modificação como saída.
No final, os totais são impressos para cada chave encontrada.
Para obter a mesma largura de coluna nos totais do resto dos dados, esse último print cnt[k], k
pode ser alterado para uma variação de
printf("%-15d%s\n", cnt[k], k)
que formata o número como um inteiro com largura de 15 caracteres justificado à esquerda.