7.2. Hello, World
It has become a convention to introduce a programming language by
demonstrating the "Hello, world" program. Showing how this program
works in awk will demonstrate just how unconventional awk is. In
fact, it's necessary to show several different approaches to printing
"Hello, world."
In the first example, we create a file named test
that contains a single line. This example shows a script that
contains the print statement:
$ echo 'this line of data is ignored' > test
$ awk '{ print "Hello, world" }' test
Hello, world
This script has only a single action, which is enclosed in braces.
That action is to execute the print statement for
each line of input. In this case, the test file
contains only a single line; thus, the action occurs once. Note that
the input line is read but never output.
Now let's look at another example. Here, we use a file that contains
the line "Hello, world."
$ cat test2
Hello, world
$ awk '{ print }' test2
Hello, world
In this example, "Hello, world" appears in the input file. The same
result is achieved because the print statement,
without arguments, simply outputs each line of input. If there were
additional lines of input, they would be output as well.
Both of these examples illustrate that awk is usually input-driven.
That is, nothing happens unless there are lines of input on which to
act. When you invoke the awk program, it reads the script that you
supply, checking the syntax of your instructions. Then awk attempts
to execute the instructions for each line of input. Thus, the
print statement will not be executed unless there
is input from the file.
To verify this for yourself, try entering the command line in the
first example but omit the filename. You'll find that because awk
expects input to come from the keyboard, it will wait until you give
it input to process: press RETURN several times, then
type an EOF (CTRL-D on most systems) to signal the
end of input. For each time that you pressed RETURN,
the action that prints "Hello, world" will be executed.
There is yet another way to write the "Hello, world" message and not
have awk wait for input. This method associates the action with the
BEGIN pattern. The BEGIN
pattern specifies actions that are performed
before the first line of input is read.
$ awk 'BEGIN { print "Hello, world" }'
Hello, world
Awk prints the message, and then exits. If a program has only a
BEGIN pattern, and no other statements, awk will
not process any input files.
 |  |  | 7. Writing Scripts
for awk |  | 7.3. Awk's Programming Model |
Copyright © 2003 O'Reilly & Associates. All rights reserved.
|