#!/bin/bash
awk 'FNR > 1 && NR==FNR {
  f_name = tolower($1) # first name
  l_name = tolower($2) # last name
  full_name = f_name":"l_name # full name used as array index
  address_city_county_state_zip = $4","$5","$6","$7","$8
  address[full_name] = address_city_county_state_zip
  next
  }
  {
    first_n = tolower($1) # first name
    last_n = tolower($2) # last name
    full_n = first_n":"last_n # full name used as array index
    printf ("%-10s %-10s %-55s %06.2f %-10s\n", $1, $2, address[full_n], $4, FILENAME)          
  }' $1 $2
./ch10_challenge.awk addresses.txt nameemailavg.tab
Input file nameemailavg.tab:
printf 'Art\tVenere\tart@venere.org\t256.62394383\nLenna\tPaprocki\tlpaprocki@hotmail.com\t259.688783099\nDonette\tFoller\tdonette.foller@cox.net\t282.32979844\n' > nameemailavg.tab
Input file addresses.txt:
printf 'first_name\tlast_name\tcompany_name\taddress\tcity\tcounty\tstate\tzip\tphone1\tphone2\temail\tweb\nAbel\tMaclead\tRangoni Of Florence\t37275 St  Rt 17m M\tMiddle Island\tSuffolk\tNY\t11953\t631-335-3414\t631-677-3675\tamaclead@gmail.com\thttp://www.rangoniofflorence.com\nArt\tVenere\tChemel, James L Cpa\t8 W Cerritos Ave #54\tBridgeport\tGloucester\tNJ\t08014\t856-636-8749\t856-264-4130\tart@venere.org\thttp://www.chemeljameslcpa.com\nDonette\tFoller\tPrinting Dimensions\t34 Center St\tHamilton\tButler\tOH\t45011\t513-570-1893\t513-549-4561\tdonette.foller@cox.net\thttp://www.printingdimensions.com\nSimona\tMorasca\tChapman, Ross E Esq\t3 Mcauley Dr\tAshland\tAshland\tOH\t44805\t419-503-2484\t419-800-6759\tsimona@morasca.com\thttp://www.chapmanrosseesq.com\nKiley\tCaldarera\tFeiner Bros\t25 E 75th St #69\tLos Angeles\tLos Angeles\tCA\t90034\t310-498-5651\t310-254-3084\tkiley.caldarera@aol.com\thttp://www.feinerbros.com\n' > addresses.txt
$ cat nameemailavg.tab
Art     Venere  art@venere.org  256.62394383
Lenna   Paprocki        lpaprocki@hotmail.com   259.688783099
Donette Foller  donette.foller@cox.net  282.32979844
$ cat addresses.txt
first_name      last_name       company_name    address city    county  state   zip     phone1  phone2  email   web
Abel    Maclead Rangoni Of Florence     37275 St  Rt 17m M      Middle Island   Suffolk NY      11953   631-335-3414    631-677-3675       amaclead@gmail.com      http://www.rangoniofflorence.com
Art     Venere  Chemel, James L Cpa     8 W Cerritos Ave #54    Bridgeport      Gloucester      NJ      08014   856-636-8749    856-264-4130       art@venere.org  http://www.chemeljameslcpa.com
Donette Foller  Printing Dimensions     34 Center St    Hamilton        Butler  OH      45011   513-570-1893    513-549-4561    donette.foller@cox.net     http://www.printingdimensions.com
Simona  Morasca Chapman, Ross E Esq     3 Mcauley Dr    Ashland Ashland OH      44805   419-503-2484    419-800-6759    simona@morasca.com http://www.chapmanrosseesq.com
Kiley   Caldarera       Feiner Bros     25 E 75th St #69        Los Angeles     Los Angeles     CA      90034   310-498-5651    310-254-3084       kiley.caldarera@aol.com http://www.feinerbros.com
Expected output:
| Art        | Venere     | James,L,Cpa,8,W                                         | 256.62 | nameemailavg.tab |
| ---- | ---- | ---- | --- | --- |
| Lenna      | Paprocki                                                           | 259.69 | nameemailavg.tab |
| Donette    | Foller     | Dimensions,34,Center,St,Hamilton                        | 282.33 | nameemailavg.tab |
The undesirable output is the first row with first_name, last_name, 000.00, last_name:
| first_name | last_name                                                          | 000.00 | addresses.txt |
| ---- | ---- | ---- | ---- | ---- |
| Art        | Venere     | James,L,Cpa,8,W                                         | 256.62 | nameemailavg.tab |
| Lenna      | Paprocki                                                           | 259.69 | nameemailavg.tab |
| Donette    | Foller     | Dimensions,34,Center,St,Hamilton                        | 282.33 | nameemailavg.tab |
Questions:
- Why does my code print the first line from the file "addresses.txt"?
- an awkprogram consists of apattern { action }. Since lines 11-14 do not have a pattern and only an action, they are not executed because the previous block hasnext?
- I updated the code block (10-15) to include the pattern FS="\t"so I can get topattern { action }format. Unfortunately that had no impact.
- When I reversed the call to awklike so,./ch10_challenge.awk nameemailavg.tab addresses.txt, the output was messed up (expected), but the first line was from the file "nameemailavg.tab". In other words, whatever files is the first file, the output has that file as a 'header'.
Here is the revised code from the second block (line 10ff):
  FS = "\t" {
    first_n = tolower($1) # first name
    last_n = tolower($2) # last name
    full_n = first_n":"last_n # full name used as array index
    printf ("%-10s %-10s %-55s %06.2f %-10s\n", $1, $2, address[full_n], $4, FILENAME)          
  }' $1 $2
 
     
    