by Ed Morton <morton@[EMAIL PROTECTED]
>
Feb 18, 2008 at 08:00 AM
On 2/18/2008 6:54 AM, Spiros Bousbouras wrote:
> On page 22 of "Effective AWK programming" we read:
>
> When awk statements within one rule are
> short, you might want to put more than one
> of them on a line. This is accomplished by
> separating the statements with a semicolon
> (`;'). This also applies to the rules
> themselves. Thus, the program shown at the
> start of this section could also be written
> this way:
> /12/ { print $0 } ; /21/ { print $0 }
> NOTE: The requirement that states that rules
> on the same line must be separated with a
> semicolon was not in the original awk language;
> it was added for consistency with the treatment
> of statements within an action.
>
> But when I try
> gawk --posix '/a/ {print "swds"} /b/ {print "1234"}'
> it works fine. Same if I omit "--posix". If it is a
> requirement then why does omitting semicolons work ?
It's not required, I don't know why the book claims it is. I suspect it's
just
bad wording and a bad example. It's only required when you need to
explicitly
mark the end of a condition/action/rule upon removing a newline, e.g. to
change
this:
/l2/
{ print $0 }
to one line would need to be:
/l2/ ; { print $0 }
rether than the completely different program:
/l2/ { print $0 }
Regards,
Ed.