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.)