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 section The BEGIN
and END
Special Patterns), 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 section Command-Line 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]