On 3/20/2008 5:55 PM, Grant wrote:
> 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]]) {
ITYM:
if (mf[1] in names) {
but that'd delete lines fom masterfile if the name didn't exist in
namefile
which may not be desirable.
> 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.


|