The supported operators are arithmetic operators (addition, subtraction, multiplication, division and modulus), logical operators, string operators and field operators.
Arithmetic operators for addition (
+), subtraction (
*), 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 (
||) and not (
!) are supported with the same
semantics as their C counterparts.
A compound boolean operator
=> is also supported in order to
ease the elaboration of constraints in records.
A => B, which
can be read as “A implies B”, translates into
!A || (A && B).
A => B
The boolean operators expect integer operands, and will try to convert any string operand to an integer value.
The compare operators less than (
>), less than or equal (
greater than or equal (
>=), equal (
and unequal (
!=) are supported with their usual
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 (
>>) 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
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
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
expr2. Otherwise it yields