Next: OFMT, Previous: Print Examples, Up: Printing [Contents][Index]
As mentioned previously, a print statement contains a list
of items separated by commas. In the output, the items are normally
separated by single spaces. However, this doesn’t need to be the case;
a single space is simply the default. Any string of
characters may be used as the output field separator by setting the
predefined variable OFS. The initial value of this variable
is the string " " (i.e., a single space).
The output from an entire print statement is called an output
record. Each print statement outputs one output record, and
then outputs a string called the output record separator (or
ORS). The initial value of ORS is the string "\n"
(i.e., a newline character). Thus, each print statement normally
makes a separate line.
In order to change how output fields and records are separated, assign
new values to the variables OFS and ORS. The usual
place to do this is in the BEGIN rule
(see BEGIN/END), so
that it happens before any input is processed. It can also be done
with assignments on the command line, before the names of the input
files, or using the -v command-line option
(see Options).
The following example prints the first and second fields of each input
record, separated by a semicolon, with a blank line added after each
newline:
$ awk 'BEGIN { OFS = ";"; ORS = "\n\n" }
> { print $1, $2 }' mail-list
-| Amelia;555-5553
-|
-| Anthony;555-3412
-|
-| Becky;555-7685
-|
-| Bill;555-1675
-|
-| Broderick;555-0542
-|
-| Camilla;555-2912
-|
-| Fabius;555-1234
-|
-| Julie;555-6699
-|
-| Martin;555-6480
-|
-| Samuel;555-3430
-|
-| Jean-Paul;555-2127
-|
If the value of ORS does not contain a newline, the program’s output
runs together on a single line.
Next: OFMT, Previous: Print Examples, Up: Printing [Contents][Index]