printf(1)printf(1)NAMEprintf - Writes formatted output
SYNOPSISprintf format [argument...]
STANDARDS
Interfaces documented on this reference page conform to industry stan‐
dards as follows:
printf: XCU5.0
Refer to the standards(5) reference page for more information about
industry standards and associated tags.
OPTIONS
None
OPERANDS
A string describing the manner of writing the output. This string is
explained in the DESCRIPTION section. The strings to be written under
the control of the format. These strings are explained in the DESCRIP‐
TION section.
DESCRIPTION
The printf command converts, formats, and writes its arguments to the
standard output. The values specified by the argument variable are for‐
matted under control of the format variable.
Syntax of the argument Variable
The argument variable is a list of one or more strings to be written to
the standard output under the control of the format variable. These
are treated as strings if the corresponding conversion character is b,
c, or s; otherwise, it is evaluated as a C constant, with the following
extensions:
A leading + (plus sign) or - (minus sign) is allowed.
If the leading character is a ' (single quote) or " (double quote), the
value is the numeric value in the underlying code set of the character
following the single quote or double quote.
Syntax of the format Variable
The format variable is a character string that contains three types of
objects: Plain characters that are copied to the output stream. The
following escape sequences are both copied to the output stream and
cause the associated action to occur on display devices that are capa‐
ble of the action. Backslash Alert Backspace Formfeed Newline Carriage
Return Tab Vertical Tab Where ddd is a one-, two-, or three-digit octal
number. These escape sequences are displayed as a byte with the
numeric value specified by the octal number. A delta character in the
format string is treated as a delta character, rather than as a space
character.
The format variable is reused as often as necessary to satisfy the
arguments. Any extra c or s conversion specifications are evaluated as
if a null string argument were supplied; other extra conversion speci‐
fications are evaluated as if a zero argument were supplied.
Each conversion specification in the format variable has the following
syntax: A % (percent sign). Zero or more options, which modify the
meaning of the conversion specification. The option characters and
their meanings are as follows: The result of the conversion is left
aligned within the field. The result of a signed conversion always
begins with a + (plus) or - (minus). If the first character of a
signed conversion is not a sign, a blank is prefixed to the result. If
both the blank and + options appear, then the blank option is ignored.
The value is converted to an alternative form. For c, d, i, u, and s
conversions, the option has no effect. For o conversion, it increases
the precision to force the first digit of the result to be a 0 (zero).
For x and X conversions, a nonzero result has 0x, or 0X prefixed to it,
respectively. For e, E, f, g, and G conversions, the result always
contains a radix character, even if no digits follow the radix charac‐
ter. For g and G conversions, trailing zeros are not removed from the
result as they usually are. For d, i, o, u, x, X, e, E, f, g, and G
conversions, leading zeros (following any indication of sign or base)
are used to pad to the field width, no space padding is performed. If
the 0 (zero) and - options appear, the 0 (zero) option is ignored. For
d, i, o, u, x, and X conversions, if a precision is specified, the 0
(zero) option is ignored. An optional decimal digit string that speci‐
fies the minimum field width. If the converted value has fewer charac‐
ters than the field width, the field is padded on the left to the
length specified by the field width. If the left-adjustment option
flag (-) is specified, the field is padded on the right. An optional
precision. The precision is a (dot) followed by an asterisk (*), or a
decimal digit string. If no precision is given, it is treated as 0
(zero). The precision specifies: The minimum number of digits to
appear for the d, o, i, u, x, or X conversions. The number of digits
to appear after the radix character for the e and f conversions. The
maximum number of significant digits for the g conversion. The maximum
number of bytes to be printed from a string in the s conversion. A
character that indicates the type of conversion to be applied, as fol‐
lows: Performs no conversion. Prints a % (percent sign). Accepts a
value as a string that may contain backslash-escape sequences. Bytes
from the converted string are printed until the end of the string or
number of bytes indicated by the precision specification is reached.
If the precision is omitted, all bytes until the first null character
are printed.
The following backslash-escape sequences are supported: The
\Oddd sequence, where ddd is a one-, two-, or three-digit octal
number that is converted to a byte with the numeric value speci‐
fied by the octal number. The escape sequences previously
listed under the description of the format variable. These are
converted to the individual characters they represented. The \c
sequence, which is not displayed and causes the printf command
to ignore any remaining characters in the string parameter con‐
taining it, any remaining string parameters, and any additional
characters in the format variable. Prints the first character
of the argument. Accepts an integer value and converts it to a
signed decimal notation in the style [-]dddd. The precision
specifies the minimum number of digits to appear. If the value
being converted can be represented in fewer digits, it is
expanded with leading zeros. The default precision is 1. The
result of converting a 0 (zero) value with a precision of 0
(zero) is a null string. Specifying a field width with a 0
(zero) as a leading character causes the field to be padded with
leading zeros. Accepts a float or double value and converts it
to the exponential form [-] d.dde +|- dd. There is one digit
before the radix character (shown here as the decimal point),
and the number of digits after the radix character is equal to
the precision specification. The LC_NUMERIC locale category
determines the radix character to use in this format. If no pre‐
cision is specified, then six digits are output. If the preci‐
sion is 0 (zero), then no radix character appears. The E con‐
version character produces a number with E instead of e before
the exponent. The exponent always contains at least two digits.
However, if the value to be printed requires an exponent greater
than two digits, additional exponent digits are printed as nec‐
essary. Accepts a float or double value and converts it to dec‐
imal notation in the format [-] ddd.ddd. The number of digits
after the radix character (shown here as the decimal point) is
equal to the precision specification. The LC_NUMERIC locale cat‐
egory determines the radix character to use in this format. If
no precision is specified, then six digits are output. If the
precision is 0 (zero), then no radix character appears. Accepts
a float or double value and converts it in the style of the f or
e conversion characters (or E in the case of the G conversion),
with the precision specifying the number of significant digits.
Trailing zeros are removed from the result. A radix character
appears only if it is followed by a digit. The style used
depends on the value converted. Style g results only if the
exponent resulting from the conversion is less than -4, or if it
is greater than or equal to the precision. Accepts an integer
value and converts it to unsigned octal notation. The precision
specifies the minimum number of digits to appear. If the value
being converted can be represented in fewer digits, it is
expanded with leading zeros. The default precision is 1. The
result of converting a 0 (zero) value with a precision of 0
(zero) is a null string. Specifying a field width with a 0
(zero) as a leading character causes the field width value to be
padded with leading zeros. An octal value for field width is
not implied. Accepts a value as a string, and bytes from the
string are printed until the end of the string is encountered or
the number of bytes indicated by the precision is reached. If no
precision is specified, all characters up to the first null
character are printed. Accepts an integer value and converts it
to unsigned decimal notation. The precision specifies the mini‐
mum number of digits to appear. If the value being converted
can be represented in fewer digits, it is expanded with leading
zeros. The default precision is 1. The result of converting a 0
(zero) value with a precision of 0 (zero) is a null string.
Specifying a field width with a 0 (zero) as a leading character
causes the field width value to be padded with leading zeros.
Accepts an integer value and converts it to unsigned hexadecimal
notation. The letters abcdef are used for the x conversion and
the letters ABCDEF are used for the X conversion. The precision
specifies the minimum number of digits to appear. If the value
being converted can be represented in fewer digits, it is
expanded with leading zeros. The default precision is 1. The
result of converting a 0 (zero) value with a precision of 0
(zero) is a null string. Specifying a field width with a 0
(zero) as a leading character causes the field width value to be
padded with leading zeros.
If the result of a conversion is wider than the field width, the field
is expanded to contain the converted result. No truncation occurs.
However, a small precision may cause truncation on the right.
EXAMPLES
The following printf command formats a series of numbers: printf
"%5d%4d\n" 1 21 321 4321 54321
This command produces the following output:
1 21
3214321 54321 0
The format variable is used three times to print all of the
given strings. The 0 (zero) is supplied by the printf command to
satisfy the last %4d conversion specification. The following
script includes printf commands to alert the user (sound a beep)
and to display prompts for entering a name and phone number.
The script then appends the user entries to a file.
printf "\aPlease fill in the following: \nName: " read name
printf "Phone number: " read phone echo $name " " $phone >>
phone_list echo >> phone_list
ENVIRONMENT VARIABLES
The following environment variables affect the execution of printf:
Provides a default value for the internationalization variables that
are unset or null. If LANG is unset or null, the corresponding value
from the default locale is used. If any of the internationalization
variables contain an invalid setting, the utility behaves as if none of
the variables had been defined. If set to a non-empty string value,
overrides the values of all the other internationalization variables.
Determines the locale for the interpretation of sequences of bytes of
text data as characters (for example, single-byte as opposed to multi‐
byte characters in arguments). Determines the locale for the format
and contents of diagnostic messages written to standard error. Deter‐
mines the location of message catalogues for the processing of LC_MES‐
SAGES. Determines the locale for numbers written using the e, E, f, g,
or G conversion characters.
SEE ALSO
Commands: awk(1), bc(1), echo(1), read(1)
Functions: printf(3)
Standards: standards(5)printf(1)