11.3. Patterns and Proceduresawk scripts consist of patterns and procedures: pattern { procedure } Both pattern and { procedure } are optional. If pattern is missing, { procedure } is applied to all lines. If { procedure } is missing, the matched line is printed. 11.3.1. PatternsA pattern can be any of the following: general expression /regular expression/ relational expression pattern-matching expression BEGIN END
Except for BEGIN and END, patterns can be combined with the Boolean operators || (or), && (and), and ! (not). A range of lines can also be specified using comma-separated patterns: pattern,pattern 11.3.2. ProceduresProcedures consist of one or more commands, function calls, or variable assignments, separated by newlines or semicolons, and are contained within curly braces. Commands fall into five groups:
11.3.3. Simple Pattern-Procedure ExamplesPrint first field of each line: { print $1 } Print all lines that contain pattern: /pattern/ Print first field of lines that contain pattern: /pattern/ { print $1 } Select records containing more than two fields: NF > 2 Interpret input records as a group of lines up to a blank line. Each line is a single field: BEGIN { FS = "\n"; RS = "" } Print fields 2 and 3 in switched order, but only on lines whose first field matches the string URGENT: $1 ~ /URGENT/ { print $3, $2 } Count and print the number of pattern found: /pattern/ { ++x } END { print x } Add numbers in second column and print the total: { total += $2 } END { print "column total is", total} Print lines that contain less than 20 characters: length($0) < 20 Print each line that begins with Name: and that contains exactly seven fields: NF = = 7 && /^Name:/ Print the fields of each record in reverse order, one per line: { for (i = NF; i >= 1; i--) print $i } |