Go forward to Assignment Ops.
Go backward to Comparison Ops.
Go up to Expressions.
Boolean Expressions
===================
A "boolean expression" is a combination of comparison expressions or
matching expressions, using the boolean operators "or" (`||'), "and"
(`&&'), and "not" (`!'), along with parentheses to control nesting.
The truth of the boolean expression is computed by combining the truth
values of the component expressions.
Boolean expressions can be used wherever comparison and matching
expressions can be used. They can be used in `if', `while' `do' and
`for' statements. They have numeric values (1 if true, 0 if false),
which come into play if the result of the boolean expression is stored
in a variable, or used in arithmetic.
In addition, every boolean expression is also a valid boolean
pattern, so you can use it as a pattern to control the execution of
rules.
Here are descriptions of the three boolean operators, with an
example of each. It may be instructive to compare these examples with
the analogous examples of boolean patterns (*note Boolean Operators and
Patterns: Boolean Patterns.), which use the same boolean operators in
patterns instead of expressions.
`BOOLEAN1 && BOOLEAN2'
True if both BOOLEAN1 and BOOLEAN2 are true. For example, the
following statement prints the current input record if it contains
both `2400' and `foo'.
if ($0 ~ /2400/ && $0 ~ /foo/) print
The subexpression BOOLEAN2 is evaluated only if BOOLEAN1 is true.
This can make a difference when BOOLEAN2 contains expressions that
have side effects: in the case of `$0 ~ /foo/ && ($2 == bar++)',
the variable `bar' is not incremented if there is no `foo' in the
record.
`BOOLEAN1 || BOOLEAN2'
True if at least one of BOOLEAN1 or BOOLEAN2 is true. For
example, the following command prints all records in the input
file `BBS-list' that contain *either* `2400' or `foo', or both.
awk '{ if ($0 ~ /2400/ || $0 ~ /foo/) print }' BBS-list
The subexpression BOOLEAN2 is evaluated only if BOOLEAN1 is false.
This can make a difference when BOOLEAN2 contains expressions
that have side effects.
`!BOOLEAN'
True if BOOLEAN is false. For example, the following program
prints all records in the input file `BBS-list' that do *not*
contain the string `foo'.
awk '{ if (! ($0 ~ /foo/)) print }' BBS-list