Eu refatorei seu código um pouco ...
for file in *.sam ; do
awk -v basename="$(basename $file .sam)" '
{ non = ($3 == "blah" && $4 >= 451000 && $4 <= 468999) ? "" : "_non"
outfile = basename non "_ribos.sam"
print > outfile
}
' "$file"
done