Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP
Posting-Version: version B 2.10 5/3/83; site utzoo.UUCP
Path: utzoo!henry
From: henry@utzoo.UUCP (Henry Spencer)
Newsgroups: net.bugs.v7,net.unix-wizards
Subject: V7 awk bug 
Message-ID: <3664@utzoo.UUCP>
Date: Mon, 19-Mar-84 22:06:53 EST
Article-I.D.: utzoo.3664
Posted: Mon Mar 19 22:06:53 1984
Date-Received: Mon, 19-Mar-84 22:06:53 EST
Organization: U of Toronto Zoology
Lines: 35

I just ran into an interesting bit of misbehavior by awk.  I'm processing
a file which looks roughly like this:

	private	$1.00	3600	seconds
	public	$1.00	3600	seconds
	dialup	$2.00	3600	seconds
	disk	$1.00	1000	block-days

with the following awk program (stripped of some irrelevancies):

	BEGIN { FS = "\t" ; OFS = "\t" }
	/./{
		n = split(substr($2, 2), dolcent, ".")
		print n, $1, dolcent[1] dolcent[2], $3
	}

We get rid of $ by taking the substr from the second character on, and
then split it and output the result.  Guess what?  For the very first
line in the file, the split yields n == 0 (!).  The line itself is not
to blame:  I tried reordering the lines, and the problem still appears
on the first and only the first.  Inserting a trash line (which gets
kicked out by some earlier checking) in front doesn't affect the result.
Changing the "split(..." line to:

		it = substr($2, 2)
		n = split(it, dolcent, ".")

make the problem go away!  For some reason split doesn't like having
a substr as its first argument... once!

I have not investigated the problem in depth, since I lack both the time
and the courage to go wading into awk.  Any brave souls out there?
-- 
				Henry Spencer @ U of Toronto Zoology
				{allegra,ihnp4,linus,decvax}!utzoo!henry