gawk: Break Statement

 
 7.4.6 The 'break' Statement
 ---------------------------
 
 The 'break' statement jumps out of the innermost 'for', 'while', or 'do'
 loop that encloses it.  The following example finds the smallest divisor
 of any integer, and also identifies prime numbers:
 
      # find smallest divisor of num
      {
          num = $1
          for (divisor = 2; divisor * divisor <= num; divisor++) {
              if (num % divisor == 0)
                  break
          }
          if (num % divisor == 0)
              printf "Smallest divisor of %d is %d\n", num, divisor
          else
              printf "%d is prime\n", num
      }
 
    When the remainder is zero in the first 'if' statement, 'awk'
 immediately "breaks out" of the containing 'for' loop.  This means that
 'awk' proceeds immediately to the statement following the loop and
 continues processing.  (This is very different from the 'exit'
 statement, which stops the entire 'awk' program.  SeeExit
 Statement.)
 
    The following program illustrates how the CONDITION of a 'for' or
 'while' statement could be replaced with a 'break' inside an 'if':
 
      # find smallest divisor of num
      {
          num = $1
          for (divisor = 2; ; divisor++) {
              if (num % divisor == 0) {
                  printf "Smallest divisor of %d is %d\n", num, divisor
                  break
              }
              if (divisor * divisor > num) {
                  printf "%d is prime\n", num
                  break
              }
          }
      }
 
    The 'break' statement is also used to break out of the 'switch'
 statement.  This is discussed in SeeSwitch Statement.
 
    The 'break' statement has no meaning when used outside the body of a
 loop or 'switch'.  However, although it was never documented, historical
 implementations of 'awk' treated the 'break' statement outside of a loop
 as if it were a 'next' statement (SeeNext Statement).  (d.c.)
 Recent versions of BWK 'awk' no longer allow this usage, nor does
 'gawk'.