Path: utzoo!utgpu!news-server.csri.toronto.edu!cs.utexas.edu!sun-barr!lll-winken!elroy.jpl.nasa.gov!sdd.hp.com!hplabs!pyramid!wjvax!mario From: mario@wjvax.UUCP (Mario Dona) Newsgroups: comp.unix.questions Subject: need AWK help: lowercase, trim trailing spaces Keywords: awk Message-ID: <1817@wjvax.UUCP> Date: 19 Apr 91 19:06:16 GMT Organization: Watkins-Johnson Co., San Jose Lines: 60 HELP! I have a situation that just cries out for an awk solution, however I'm at a loss over some minor, but important details. I have a list of companies that need to be preprocessed before sending them to our typing department. A simplified portion of the input file as follows: COMPANY1 2800 FULLING P O BOX 3608 HARRISBURG PA 17105 COMPANY2 500 ELM MILWAUKEE WI 53122 COMPANY3 13500 CENTRAL P O BOX 655303 DALLAS TX 75265-5303 ^ ^ ^ ^ ^ | | | | | 1 11 30 47 71 My mission, which I chose to accept, was to reformat the list so that it looks like this: Company1 28 Fulling P O Box 3608 Harrisburg PA 17105 Company2 500 Elm Milwaukee WI 53122 Company3 13500 Central P O Box 655303 Dallas TX 75265-5303 Using the SUBSTR function to get the parts I want was trivial; the problem is, I can't figure out: 1. How to prevent blank lines from printing if there is nothing to print (e.g. the second address in COMPANY2 above). 2. How to concatenate the city and zip fields as shown. 3. If a word is greater than 2 characters, lowercase all letters except for the first character (this is to keep state capitols capitalized). My feeble attempt so far is shown below. If anyone has any ideas, I'd be much obliged. BEGIN { RS="\n" } { name=substr($0,1,10) address1=substr($0,11,19) address2=substr($0,30,17) city=substr($0,47,24) zip=substr($0,71,10) printf("%s\n%s\n%s\n%s\n%s\n\n", name, address1, address2, city, zip) } Mario Dona ...!{ !decwrl!qubix, ames!oliveb!tymix, pyramid}!wjvax!mario The above opinions are mine alone and not, in any way, those of WJ.