De acordo com o manual do awk, BEGIN e END não são usados para corresponder à entrada, mas para fornecer informações de inicialização e limpeza ao script do awk. Aqui está o exemplo dado:
ls -l | \
awk 'BEGIN { print "Files found:\n" } /\<[a|x].*\.conf$/ { print $9 }'
Files found:
amd.conf
antivir.conf
xcdroast.conf
xinetd.conf
Primeiro, isso imprime uma string para saída. Em seguida, verifica a entrada para uma correspondência de padrão, onde a entrada começa com a ou x seguido por qualquer caractere uma ou várias vezes seguido pelo .conf. Para qualquer correspondência, a 9ª coluna é impressa.
O fato de sermos forçados a usar começa aqui, isso significa que o awk pode usar apenas no máximo uma função de impressão que contém BEGIN ou END? Caso contrário, por que não podemos simplesmente usar a função de impressão no início sem a palavra-chave BEGIN? Parece que o INÍCIO é supérfluo.