Uma maneira de fazer isso é contar o número de linhas no início do seu script. Ao produzir, emita uma vírgula no final apenas se o número da sua linha não corresponder ao número de linhas. Como fazer isso é explicado aqui .
Outra abordagem é não imprimir uma vírgula ao gerar a primeira entrada e imprimir uma antes das entradas subsequentes. Isso pode ser feito da seguinte maneira:
awk -F, '{if (!i)printf "\""$0"\"";else printf ",\n\""$0"\"";i=1}END{print ""}' a.in
Isto é definitivamente muito mais limpo.
Existe também uma terceira via. O código
if(getline == 0)
lê a próxima linha e, portanto, informa se você está no final do arquivo. Fazer isso é ainda mais limpo que o método acima, mas incorre em sobrecarga de ler o arquivo efetivamente duas vezes, então eu não o uso a menos que o segundo método falhe (por exemplo, eu tenho que processar a próxima a última linha de forma diferente também) .