Обнаружение EOF не слишком надежно, когда в командной строке находится несколько файлов. Обнаружение начала файла является более надежным.
Для этого первый файл особенный, и мы игнорируем FNR == 1.
После первого файла FNR == 1 становится концом предыдущего файла. У last_filename всегда есть имя файла, который вы обрабатываете.
Выполните обработку вашего файла после остального.
Выполните обработку EOF внутри блока else и в блоке END.
gawk 'BEGIN{last_filename="";} \
FNR==1{if (last_filename==""){last_filename=FILENAME;} \
else {print "EOF: "last_filename;last_filename=FILENAME;}} \
END{print "END: "last_filename;}' $*
Для нескольких наборов файлов блок else выполняется в EOF для всех, кроме последнего файла. Последний файл выполняется в блоке END.
Для отдельных наборов файлов блок else не выполняется, а блок END выполняется.