Awk with passed parameters
Art Neilson
art at pilikia.pegasus.com
Tue Mar 12 04:34:26 AEST 1991
In article <1991Mar10.235414.28125 at athena.mit.edu> jik at athena.mit.edu (Jonathan I. Kamens) writes:
>In article <1991Mar08.141340.26881 at convex.com>, tchrist at convex.COM (Tom Christiansen) writes:
>|> The first thing is that you need to put your variable assignments
>|> in front of your program. You probably should protect your string
>|> literals with double quotes so it doesn't think they are variables.
>
> This is not true. Awk reads variable assignments in "file arguments" and
>does the assignments *before* the main body of the awk program is executed.
>The only problem with the program as originally posted was that he needed to
>add "-" to the end of the awk command to tell it to read from stdin after
>reading the other "file arguments" (which were actually variable assignments).
>
> If he adds that dash, then things should work on virtually any version of
>awk, since variable assignments in file arguments were supported in very early
>versions of awk and have continued to be supported in most versions. Tom, do
>you know of a version of awk which won't work properly if an extra file
>argument of "-" is added to the end of the awk command?
Hey! use of that dash is a nifty trick. I have always done shell quoting
tricks to pass shell parameters to old awk, the dash technique is a much
better method. The following works fine on my system, although I need a
+ 0 on the day passed from the date command output in order to make it
compare correctly with the day field in the ls command output (for days
of the month between 1 and 9). This works for me:
set `date`
ls -l | awk '$6 == mm && $7 == dd + 0 { print }' mm=$2 dd=$3 -
--
Arthur W. Neilson III | INET: art at pilikia.pegasus.com
Bank of Hawaii Tech Support | UUCP: uunet!ucsd!nosc!pilikia!art
More information about the Comp.unix.questions
mailing list