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]