File: gawk.info, Node: Pattern Action Summary, Prev: Built-in Variables, Up: Patterns and Actions 7.6 Summary =========== * Pattern-action pairs make up the basic elements of an 'awk' program. Patterns are either normal expressions, range expressions, or regexp constants; one of the special keywords 'BEGIN', 'END', 'BEGINFILE', or 'ENDFILE'; or empty. The action executes if the current record matches the pattern. Empty (missing) patterns match all records. * I/O from 'BEGIN' and 'END' rules has certain constraints. This is also true, only more so, for 'BEGINFILE' and 'ENDFILE' rules. The latter two give you "hooks" into 'gawk''s file processing, allowing you to recover from a file that otherwise would cause a fatal error (such as a file that cannot be opened). * Shell variables can be used in 'awk' programs by careful use of shell quoting. It is easier to pass a shell variable into 'awk' by using the '-v' option and an 'awk' variable. * Actions consist of statements enclosed in curly braces. Statements are built up from expressions, control statements, compound statements, input and output statements, and deletion statements. * The control statements in 'awk' are 'if'-'else', 'while', 'for', and 'do'-'while'. 'gawk' adds the 'switch' statement. There are two flavors of 'for' statement: one for performing general looping, and the other for iterating through an array. * 'break' and 'continue' let you exit early or start the next iteration of a loop (or get out of a 'switch'). * 'next' and 'nextfile' let you read the next record and start over at the top of your program or skip to the next input file and start over, respectively. * The 'exit' statement terminates your program. When executed from an action (or function body), it transfers control to the 'END' statements. From an 'END' statement body, it exits immediately. You may pass an optional numeric value to be used as 'awk''s exit status. * Some predefined variables provide control over 'awk', mainly for I/O. Other variables convey information from 'awk' to your program. * 'ARGC' and 'ARGV' make the command-line arguments available to your program. Manipulating them from a 'BEGIN' rule lets you control how 'awk' will process the provided data files.