Increment and decrement operators increase or decrease the value of
a variable by one. You could do the same thing with an assignment operator, so
the increment operators add no power to the awk
language; but they
are convenient abbreviations for very common operations.
The operator to add one is written `++'. It can be used to increment a variable either before or after taking its value.
To pre-increment a variable v, write `++v'. This adds one to the value of v and that new value is also the value of this expression. The assignment expression `v += 1' is completely equivalent.
Writing the `++' after the variable specifies post-increment. This
increments the variable value just the same; the difference is that the
value of the increment expression itself is the variable's old
value. Thus, if foo
has the value four, then the expression `foo++'
has the value four, but it changes the value of foo
to five.
The post-increment `foo++' is nearly equivalent to writing `(foo
+= 1) - 1'. It is not perfectly equivalent because all numbers in
awk
are floating point: in floating point, `foo + 1 - 1' does
not necessarily equal foo
. But the difference is minute as
long as you stick to numbers that are fairly small (less than 10e12).
Any lvalue can be incremented. Fields and array elements are incremented just like variables. (Use `$(i++)' when you wish to do a field reference and a variable increment at the same time. The parentheses are necessary because of the precedence of the field reference operator, `$'.)
The decrement operator `--' works just like `++' except that it subtracts one instead of adding. Like `++', it can be used before the lvalue to pre-decrement or after it to post-decrement.
Here is a summary of increment and decrement expressions.
++lvalue
lvalue++
--lvalue
lvalue--
Go to the first, previous, next, last section, table of contents.