Gawk/Two-Rules
Next: More Complex, Previous: Very Simple, Up: Getting Started [Contents][Index]
1.4 An Example with Two Rules
The awk
utility reads the input files one line at a
time. For each line, awk
tries the patterns of each rule.
If several patterns match, then several actions execute in the order in
which they appear in the awk
program. If no patterns match, then
no actions run.
After processing all the rules that match the line (and perhaps there are none),
awk
reads the next line. (However,
see section The next
Statement
and also see section The nextfile
Statement.)
This continues until the program reaches the end of the file.
For example, the following awk
program contains two rules:
/12/ { print $0 } /21/ { print $0 }
The first rule has the string ‘12
’ as the
pattern and ‘print $0
’ as the action. The second rule has the
string ‘21
’ as the pattern and also has ‘print $0
’ as the
action. Each rule’s action is enclosed in its own pair of braces.
This program prints every line that contains the string
‘12
’ or the string ‘21
’. If a line contains both
strings, it is printed twice, once by each rule.
This is what happens if we run this program on our two sample data files,
mail-list
and inventory-shipped
:
$ awk '/12/ { print $0 } > /21/ { print $0 }' mail-list inventory-shipped -| Anthony 555-3412 [email protected] A -| Camilla 555-2912 [email protected] R -| Fabius 555-1234 [email protected] F -| Jean-Paul 555-2127 [email protected] R -| Jean-Paul 555-2127 [email protected] R -| Jan 21 36 64 620 -| Apr 21 70 74 514
Note how the line beginning with ‘Jean-Paul
’
in mail-list
was printed twice, once for each rule.
Next: More Complex, Previous: Very Simple, Up: Getting Started [Contents][Index]