Observação: partes desta resposta são específicas do GNU awk
, especificamente 4.0 e posterior, que foram adicionados BEGINFILE
/ ENDFILE
awk '{print "File name: " FILENAME}' myfile
Isso imprimirá File name: myfile
uma vez para cada linha no myfile. Se myfile for um arquivo em branco (zero bytes), ele não conterá linhas e, portanto, a string acima não será impressa.
awk 'BEGINFILE{print "File name: " FILENAME}' myfile
Se suportado, isso imprimirá File name: myfile
uma vez, antes de processar as linhas. (Caso contrário, ele provavelmente decidirá que BEGINFILE
é variável com um valor falso e não imprimirá nada.)
awk 'BEGIN{print "File name: " FILENAME}' myfile
Esse bloco é avaliado antes que qualquer um dos arquivos seja processado e, neste momento, o valor de FILENAME
é não definido .
A gawk
documentação define especificamente como ""
, então nós podemos saber que apenas imprimirá File name:
.