The supported operators are arithmetic operators (addition, subtraction, multiplication, division and modulus), logical operators, string operators and field operators.
Arithmetic operators for addition (+), subtraction (-),
multiplication (*), integer division (/) and modulus
(%) are supported with their usual meanings.
These operators require either numeric operands or string operands whose value can be interpreted as numbers (integer or real).
The boolean operators and (&&), or
(||) and not (!) are supported with the same
semantics as their C counterparts.
The boolean operators expect integer operands, and will try to convert any string operand to an integer value.
The compare operators less than (<), greater
than (>), less than or equal (<=),
greater than or equal (>=), equal (=)
and unequal (!=) are supported with their usual
meaning.
Strings can be compared with the equality operator (=).
The match operator (~) can be used to match a string with a
given regular expression. The supported regexp syntax is described in
the GNU C library manual.
The compare operators before (<<), after
(>>) and same time (==) can be used with fields
and strings containing parseable dates.
See Date input formats.
Field counters are replaced by the number of occurrences of a field with the given name in the record. For example:
The previous expression is replaced with the number of fields named
Email in the record. It can be zero if the record does not
have a field with that name.
The string concatenation operator (&) can be used to
concatenate any number of strings and field values.
'foo' & Name & 'bar'
The ternary conditional operator can be used to select alternatives based on the value of some expression:
expr1 ? expr2 : expr3
If expr1 evaluates to true (i.e. it is an integer or the string
representation of an integer and its value is not zero) then the
operator yields expr2. Otherwise it yields expr3.
Note that there should be always at least one blank character between
expr2 and the colon (:) if expr2 is a field name.
This is because field names can optionally end with a colon.