awk gacks with grep

Alton Harkcom harkcom at potato.pa.Yokogawa.CO.JP
Sat Jul 7 10:15:41 AEST 1990


   I don't understand...

   I used a textbook example from Kernighan and Pike "The UNIX Programming
Environment" and then hit it with grep and it bellied up...

#sentry program to let me know when somebody logs on or off
#from page 147 "The UNIX Programming Environment" by Kernighan and Pike

# watchwho: watch who logs in and out

#PATH=/bin:/usr/bin    # I don't need it
new=/tmp/wwho1.$$
old=/tmp/wwho2.$$
>$old                  # create empty file

while :                # loop forever
do
	who >$new
	diff $old $new
	mv $new $old
	sleep 60
done | awk '/>/ && !/harkcom/ { $1 = "in:  "; print }
            /</ && !/harkcom/ { $1 = "out: "; print }' 
#end


   I typed "sentry &" (after setting it up) and it worked fine...

   Today I decided I was tired of seeing my own name appear every time I opened
a new window in X. I typed "sentry | grep -v harkcom &" and I got nothing. I 
logged in and out as other users many times (staying on for 2-3 minutes each
time) yet nothing came out.

   I put grep directly after awk:

done | awk '/>/ && !/harkcom/ { $1 = "in:  "; print }
            /</ && !/harkcom/ { $1 = "out: "; print }' | grep -v harkcom

   but no output. Then I took out awk and left grep. I got the diff lines for
the other users as expected. I then returned it to its original form and tried
it as usual. Again no problems. Then I tried "sentry > /tmp/sentry.tmp" and let
it run while I rlogged in and out on another terminal for a while. Then I
interrupted sentry and looked at /tmp/sentry.tmp. It was empty...

   Is there something about the way that awk buffers that I need to know?

   I fixed the problem by adding the awk script to skip my name but I still
want to know ?why?

   Help...




--
--harkcom at potato.pa.yokogawa.co.jp



More information about the Comp.unix.questions mailing list