Inserting fields by reading and comparing two files? -->

Awk Programming

Hey AWK Folks!
I'm stumped... Here's what I'm trying to do. I have two files,
1) names.out with three fields space delimited. User Login ID,
Firstname, & Lastname IE:
	jjd John Doe
	jdd Jane Doe
	sae Someone Else
	... etc ...
2) masterfile.out with 3 fields colon delimited. User Login
ID:null:department number IE:
	... etc ...

What I need to do is fill all the null's in masterfile.out with first
and last name found in my names.out file. I would assume we would have
to open both files for read, compare the first field between the two
files and if the User Login ID matches, take fields $2 & $3 ( First
and Last name ) from names.out and copy to $2 of masterfile.out, if
the User Login ID does not match simply skip.

I have over 1,400 lines to go through for which only about 1,200
should match and fill the names in.

Is this something easy to do with awk? I've attempted many scripts but
I just can't wrap my head around this:(

Thanks for any help! :-)
awk 'NR==FNR{a[$1]=$2" "$3;next}{$2=a[$1]}1' names.out FS=":" OFS=":" masterfile.out

Wow! Grant & Ed for the amazing help ( more like the answer:) ) on
this! Worked like a charm! I did forget one thing which was some of
these names had middle initials which were always single char followed
by a period IE Jane S. Doe so I stripped any possible middle initials
out by doing the following, though it took me forever to figure out:
awk -F. '{gsub("\\.","");gsub(" . "," "); print $1}' names.out >

Cool stuff!

Once again thanks for your responses that was awesome ^__^
You could just leave them in:

awk 'NR==FNR{n=$1;$1="";sub(/ +/,"");a[n]=$0;next} {$2=a[$1]}1' names.out FS=":"
OFS=":" masterfile.out

Or you could've just not included them. The original script I posted was:

awk 'NR==FNR{a[$1]=$2" "$3;next}{$2=a[$1]}1' names.out FS=":" OFS=":" masterfile.out

Just tweak it to this to skip any middle initials:

awk 'NR==FNR{a[$1]=$2" "$NF;next}{$2=a[$1]}1' names.out FS=":" OFS=":"