manpagez: man pages & more
info gawk
Home | html | info | man

gawk: For Statement

 
 7.4.4 The 'for' Statement
 -------------------------
 
 The 'for' statement makes it more convenient to count iterations of a
 loop.  The general form of the 'for' statement looks like this:
 
      for (INITIALIZATION; CONDITION; INCREMENT)
        BODY
 
 The INITIALIZATION, CONDITION, and INCREMENT parts are arbitrary 'awk'
 expressions, and BODY stands for any 'awk' statement.
 
    The 'for' statement starts by executing INITIALIZATION.  Then, as
 long as the CONDITION is true, it repeatedly executes BODY and then
 INCREMENT.  Typically, INITIALIZATION sets a variable to either zero or
 one, INCREMENT adds one to it, and CONDITION compares it against the
 desired number of iterations.  For example:
 
      awk '
      {
          for (i = 1; i <= 3; i++)
              print $i
      }' inventory-shipped
 
 This prints the first three fields of each input record, with one field
 per line.
 
    It isn't possible to set more than one variable in the INITIALIZATION
 part without using a multiple assignment statement such as 'x = y = 0'.
 This makes sense only if all the initial values are equal.  (But it is
 possible to initialize additional variables by writing their assignments
 as separate statements preceding the 'for' loop.)
 
    The same is true of the INCREMENT part.  Incrementing additional
 variables requires separate statements at the end of the loop.  The C
 compound expression, using C's comma operator, is useful in this
 context, but it is not supported in 'awk'.
 
    Most often, INCREMENT is an increment expression, as in the previous
 example.  But this is not required; it can be any expression whatsoever.
 For example, the following statement prints all the powers of two
 between 1 and 100:
 
      for (i = 1; i <= 100; i *= 2)
          print i
 
    If there is nothing to be done, any of the three expressions in the
 parentheses following the 'for' keyword may be omitted.  Thus,
 'for (; x > 0;)' is equivalent to 'while (x > 0)'.  If the CONDITION is
 omitted, it is treated as true, effectively yielding an "infinite loop"
 (i.e., a loop that never terminates).
 
    In most cases, a 'for' loop is an abbreviation for a 'while' loop, as
 shown here:
 
      INITIALIZATION
      while (CONDITION) {
        BODY
        INCREMENT
      }
 
 The only exception is when the 'continue' statement (⇒Continue
 Statement) is used inside the loop.  Changing a 'for' statement to a
 'while' statement in this way can change the effect of the 'continue'
 statement inside the loop.
 
    The 'awk' language has a 'for' statement in addition to a 'while'
 statement because a 'for' loop is often both less work to type and more
 natural to think of.  Counting the number of iterations is very common
 in loops.  It can be easier to think of this counting as part of looping
 rather than as something to do inside the loop.
 
    There is an alternative version of the 'for' loop, for iterating over
 all the indices of an array:
 
      for (i in array)
          DO SOMETHING WITH array[i]
 
 ⇒Scanning an Array for more information on this version of the
 'for' loop.
 
© manpagez.com 2000-2018
Individual documents may contain additional copyright information.