On Thu, 20 Mar 2008 15:23:36 -0700 (PDT), google@[EMAIL PROTECTED]
wrote:
>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:
> jjd:null:43
> jdd:null:25
> sae:null:9
> ... 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:(
Like this?
grant@[EMAIL PROTECTED]
cat namefile
jjd John Doe
jdd Jane Doe
sae Someone Else
grant@[EMAIL PROTECTED]
cat masterfile
jjd:null:43
jdd:null:25
sae:null:9
grant@[EMAIL PROTECTED]
cat mixemup
#!/usr/bin/gawk -f
#
# read names
NR == FNR { names[$1] = $2 " " $3 }
# read masterfile and print
NR != FNR {
split($0, mf, ":")
if (names[mf[1]]) {
print mf[1] ":" names[mf[1]] ":" mf[3]
}
}
grant@[EMAIL PROTECTED]
./mixemup namefile masterfile
jjd:John Doe:43
jdd:Jane Doe:25
sae:Someone Else:9
Grant.
--
http://bugsplatter.mine.nu/


|