awk — FNR vs NR
FNR resets per file, NR counts globally
awk '{print FILENAME, "FNR=" FNR, "NR=" NR, $0}' file1 file2
Detect file boundaries — print header at start of each file
awk 'FNR==1 {print "=== " FILENAME " ==="}' file1 file2 file3
NR==FNR idiom — true only for the first file
awk 'NR==FNR {a[$1]=$2; next} {print $0, a[$1]}' lookup.txt data.txt
Process files differently based on FILENAME
awk 'FILENAME=="users.txt" {users[$1]++} FILENAME=="logins.txt" {logins[$1]++} END{for(u in users) print u, logins[u]+0}' users.txt logins.txt
Count records per file
awk 'FNR==1 && NR>1{print prev, count} {prev=FILENAME; count=FNR} END{print prev, count}' file1 file2