awk can't open file; file merge attempt

Dear all, I have an AWK related issue.

I have two data files; the first, FileA has fewer lines, the second, FileB has more. FileA [75MB] is a subset of FileB [20GB]. Both files are tab delimited.

What I want to do?
When the first two columns for FileA match the first two columns of FileB, I want to print all 24 columns of FileB.
The output file should have a row number == the number of rows in FileA.

I tired this in AWK:

awk 'BEGIN{OFS="\t"} NR==FNR {f1[$1$2] = $0; next} ($1$2 in f1) {printf "%s",f1[$1$2]; for(i=4; i<=NF; i++) printf "\t%s",$i; printf "\n"}' FileA FileB*> NewFile

When I run, it throws the error:

" awk: can't open file FileA*
 input record number 1402341, file FileA*
 source line number 1                          ## input number = row number FileA

I can't figure out why this won't work. If someone can, I'd appreciate the help a lot !!

Does FileA have an asterisk as its trailing character... "FileA*" or is it simply "FileA"?

Ah! Apologies for the asterisks!

It is just called FileA; there is no trailing asterisk. I think the asterisks may have arisen in conversion to the code boxes that allow for clearer display here.

Anyway, no asterisks either in the files, or in the error readout!

------ Post updated at 06:44 PM ------

Unless I have somehow non-visual characters in the code, which I have mistaken for white space, in which case, that could explain why these asterisks have appeared in each box?

One reason why a utility like awk might see an asterisk and include it in a diagnostic message even though it isn't visible when you cat the script onto your terminal is <backspace> characters in your script file. For example, if what you're seeing on your screen as:

FileA FileB*> NewFile

actually contained some other text and <backspace>s as in the following:

FileA FileAB<backspace>* <backspace><backspace><backspace><backspace><backspace><backspace><backspace> B*> NewFile

that would produce the diagnostic message you've shown us from the script you've shown us.

Have you tried using:

od -bc script_name

to see if there are any invisible characters in your script?

Other findings (that lead to malfunction but hardly relate to your error message).
1.
You don't make use of the OFS, but your input files are tab-separated. So you certainly need

BEGIN { FS="\t" }

It makes sense to include the FS in the key otherwise $1=1 $2=12 are not distinguishable from $1=11 $2=2

{ key=($1 FS $2) }

And use key in lieu of $1$2 .