O Awk coloca um loop implícito em torno da maior parte do script: além dos BEGIN
e END
blocks (e definições de função), o script é executado para cada linha em seqüência. Então, seria muito estranho ter um loop como for (i = 1; i<= NR; i++)
em um script awk: quando o awk passa pela primeira linha, este executa o corpo do loop para i=1
, então o awk passa pela segunda linha e o corpo do loop é executado por i=1
e i=2
, então o awk passa pela segunda linha e o corpo do loop é executado para i=1
e i=2
e i=3
, etc.
Supondo que os nomes dos funcionários não sejam repetidos, o pagamento total de cada funcionário é simplesmente $2 * $3
. Você pode imprimir isso se quiser:
NR == 1 { print $1, $2, $3, "total" }
NR != 1 { print $1, $2, $3, $2 * $3 }
(A condição NR == 1
identifica a linha de cabeçalho.)
O pagamento total de todos os funcionários é a soma dessa expressão para cada linha, além da linha de cabeçalho. Para calcular o pagamento total de todos os funcionários, adicione o pagamento do empregado atual ao total acumulado.
NR != 1 { total += $2 * $3 }