Você pode fazer isso como uma solução de duas passagens no awk:
awk 'FNR == NR { n = $2; next } { print $1, $2/n }' infile infile
Se a sua versão do awk suporta o bloco ENDFILE (por exemplo, o GNU awk 4+), você pode fazer assim:
awk 'ENDFILE { n = $2 } FNR != NR { print $1, $2/n }' infile infile
Note que é mais eficiente para seek
ao final do arquivo ver primeiro a resposta de camh .
Explicação
O primeiro exemplo funciona lembrando-se do $2
anterior, ou seja, ele é avaliado apenas quando o contador de linha local ( FNR
) é igual ao contador de linha global ( NR
). O comando next
pula para a próxima linha, nesse caso, garante que o último bloco seja avaliado apenas quando o segundo argumento for analisado.
O segundo exemplo tem lógica similar, mas aproveita o bloco ENDFILE que é avaliado quando o final de um arquivo de entrada é atingido.