PRINTF(1) | General Commands Manual | PRINTF(1) |
printf
—
printf |
format [arguments ...] |
printf
formats and prints its arguments, after the
first, under control of the format. The
format is a character string which contains three types
of objects: plain characters, which are simply copied to standard output,
character escape sequences which are converted and copied to the standard
output, and format specifications, each of which causes printing of the next
successive argument.
The arguments after the first are treated as
strings if the corresponding format is either b
,
B
, c
, or
s
; otherwise it is evaluated as a C constant, with
the following extensions:
The format string is reused as often as necessary to satisfy the arguments. Any extra format specifications are evaluated with zero or the null string.
Character escape sequences are in backslash notation as defined in ANSI X3.159-1989 (“ANSI C89”). The characters and their meanings are as follows:
\e
\a
\b
\f
\n
\r
\t
\v
\´
\"
\\
\
num\x
xxEach format specification is introduced by the percent character (“%”). The remainder of the format specification includes, in the following order:
#
b
, c
,
d
, and s
formats, this
option has no effect. For the o
format the
precision of the number is increased to force the first character of
the output string to a zero. For the x
(X
) format, a non-zero result has the string
0x
(0X
) prepended to
it. For e
, E
,
f
, F
,
g
, and G
formats, the
result will always contain a decimal point, even if no digits follow
the point (normally, a decimal point only appears in the results of
those formats if a digit follows the decimal point). For
g
and G
formats,
trailing zeros are not removed from the result as they would otherwise
be.-
+
0
.
’, followed by
an optional digit string giving a precision which
specifies the number of digits to appear after the decimal point, for
e
and f
formats, or the
maximum number of characters to be printed from a string
(b
, B
, and
s
formats); if the digit string is missing, the
precision is treated as zero;diouxXfFeEgGaAbBcs
).A field width or precision may be
‘*
’ instead of a digit string. In this
case an argument supplies the field width or
precision.
The format characters and their meanings are:
diouXx
fF
.
ddd where the
number of d's after the decimal point is equal to the precision
specification for the argument. If the precision is missing, 6 digits are
given; if the precision is explicitly 0, no digits and no decimal point
are printed. If the number is Infinity, or Not a Number (NaN), then
“inf” (or “nan”) is printed for
f
format, and “INF” (or
“NAN”) for F
format.eE
.
ddde
±dd
where there is one digit before the decimal point and the number after is
equal to the precision specification for the argument; when the precision
is missing, 6 digits are produced. An upper-case E is used for an
‘E’ format, and upper-case for Infinity and NaN as for
‘F’ format.gG
f
(F
) or in style
e
(E
) whichever gives full
precision in minimum space.aA
b
The following additional backslash-escape sequences are supported:
\c
printf
to ignore any remaining
characters in the string operand containing it, any remaining string
operands, and any additional characters in the format operand.\0
num\^
c\M-
c\M^
cB
\
c',
`\^
c',
`\M-
c' or
`\M^
c', formats described
above.c
s
%
In no case does a non-existent or small field width cause truncation of a field; padding takes place only if the specified field width exceeds the actual width.
If the first character of format is a dash, format must be preceded by a word consisting of two dashes (--) to prevent it from being interpreted as an option string.
printf
utility exits 0 on success,
and >0 if an error occurs.
printf
utility conforms to IEEE Std
1003.1-2001 (“POSIX.1”).
Support for the floating point formats and `*' as a field width and precision are optional in POSIX.
The behaviour of the %B format and the \', \", \xxx, \e and \[M][-|^]c escape sequences are undefined in POSIX.
Hexadecimal character constants are restricted to, and should be specified as, two character constants. This is contrary to the ISO C standard but does guarantee detection of the end of the constant.
%c
format to do likewise, but in fact it does not.
To convert a string representation of a decimal, octal, or
hexadecimal number into the corresponding character, two nested
printf
invocations may be used, in which the inner
invocation converts the input to an octal string, and the outer invocation
uses the octal string as part of a format. For example, the following
command outputs the character whose code is 0x0A, which is a newline in
ASCII:
printf "$(printf
"\\%o" "0x0A")"
August 31, 2018 | NetBSD 9.4 |