print
¶When printing numeric values with the print
statement,
awk
internally converts each number to a string of characters
and prints that string. awk
uses the sprintf()
function
to do this conversion
(see String-Manipulation Functions).
For now, it suffices to say that the sprintf()
function accepts a format specification that tells it how to format
numbers (or strings), and that there are a number of different ways in which
numbers can be formatted. The different format specifications are discussed
more fully in
Format-Control Letters.
The predefined variable OFMT
contains the format specification
that print
uses with sprintf()
when it wants to convert a
number to a string for printing.
The default value of OFMT
is "%.6g"
.
The way print
prints numbers can be changed
by supplying a different format specification
for the value of OFMT
, as shown in the following example:
$ awk 'BEGIN { > OFMT = "%.0f" # print numbers as integers (rounds) > print 17.23, 17.54 }' -| 17 18
More detail on how awk
converts numeric values into
strings is provided in How awk
Converts Between Strings and Numbers. In particular, for
print
, awk
uses the value of OFMT
instead of
that of CONVFMT
, but otherwise behaves exactly the same
as described in that section.
According to the POSIX standard, awk
’s behavior is undefined
if OFMT
contains anything but a floating-point conversion specification.
(d.c.)