printf(1) DG/UX R4.11MU05 printf(1)
NAME
printf - print formatted output
SYNOPSIS
printf format [arg... ]
DESCRIPTION
The printf command converts, formats, and prints its args under
control of the format.
format a character string that contains three types of items:
literal characters
which are copied to the output stream
conversion specifications
each of which results in fetching zero or more args
escape sequences
which are translated into the other characters. Escape
sequences represent the following nongraphic characters:
\a alert \n newline
\b backspace \t tab
\r carriage return \v vertical tab
\f form feed \\ backslash
and \ddd where ddd is a one, two, or three digit octal
number. One byte with the numeric value specified by the
octal number is output.
arg string(s) to be printed under the control of format. The
results are equivalent to null strings or zero values if
there are insufficient args for the format. If the format
is exhausted while args remain, the format is re-used,
treating the first remaining arg as if it were the first
arg. However, if any position fields are present in any
conversion specifications, any remaining args are ignored,
see below.
Each conversion specification is introduced by the character %.
After the %, the following appear in sequence:
position An optional field, consisting of a positive decimal integer
followed by a $, specifying the next arg to be converted.
If this field is not provided, the arg following the last
arg converted is used. If this field is present in any
conversion specifications in the format, any args remaining
after the format is exhausted are simply ignored.
For example, the conversion specification string %3$s means
to use the third arg in the list for this conversion.
flags Zero or more flags, in any order, that modify the meaning
of the conversion specification. The following flags are
supported:
- The result of the conversion is left-justified in
the field.
+ The result of a signed conversion always begins with
a sign (+ or -).
space If the first character of a signed conversion is not
a sign, a space is placed before the result. If the
space and + flags both appear, the space flag is
ignored.
# For o conversion, the precision is increased (if
needed) to force the firs t digit of the result to
be zero. For x and X conversions, 0x or 0X is
placed before the result if it is nonzero.
0 For d, i, o, u, x, and X conversions, the field
width is padded with leading zeros (following an
indication of sign or base); no space padding is
performed. If the 0 and - flags both appear or if a
precision is specified, the 0 flag is ignored.
field width
An optional string of decimal digits that specify a minimum
field width. Without the left-adjust flag (-), the converted
value in the output field is padded on the left. With the -
flag, it is padded on the right.
precision
For the d, o, i, u, x, or X conversions, precision gives the
minimum number of digits to appear; the field is padded with
leading zeros. For an s conversion, precision gives the maximum
number of bytes to be written from a string. precision takes
the form of a period (.) followed by a string of decimal digits;
a null string is treated as zero.
conversion characters
A conversion character from those listed below that indicates
the type of conversion to be applied.
d, i, o, u, x, X
For each of these characters, the precision component
gives the minimum number of digits to appear. With the
exception of o conversions, if the value being converted
can fit into fewer digits that the given minimum, it is
expanded with leading zeros. The default precision is 1.
Converting a zero value with a precision of zero results
in no characters. The argument operand is treated as a C
constant with the following extensions:
a leading plus or minus sign is allowed, and
if the leading character is a single or double
quote, the value is the numeric value of the
character following the quote in the underlying
code set.
The effects of each of these conversion characters is as
follows:
d, i Written as a signed decimal which is converted in
the style [-]dddd.
o Written as unsigned octal.
u Written as unsigned decimal.
x Hexadecimal using 0123456789abcedf as digits.
X Hexadecimal using 0123456789ABCEDF as digits.
c The integer argument is treated as a string and is
converted to unsigned character and the resulting byte is
written.
b The argument is a string that may contain backslash-
escape sequences. All the supported escape sequences
listed under escape sequences above and \0ddd and \c are
supported. The \0ddd sequence is the same as the normal
\ddd sequence. \c is not written and causes printf to
ignore any remaining characters in the string operand
containing \c, any remaining string operands, and any
additional characters in the format operand.
Bytes from the converted string are written until the end
of the string or the number of bytes indicated by
precision is reached. If precision is omitted, all bytes
up to the end of the string are written.
% Write the % character; no argument is written.
For each specification that consumes an argument, the next argument
operand is evaluated and converted to the appropriate type for the
conversion.
The format operand is reused as often as necessary to satisfy of the
argument operands. An extra c or s conversion specification is
evaluated as if a null string argument was given. If other
conversion specifications are extra, they are evaluated as if a zero
argument was given.
If an argument operand cannot be completely converted into an
internal value that is appropriate to the corresponding conversion
specification, a diagnostic message is written to standard error and
the final exit status will be non-zero. It continues to process
remaining operands and writes to standard output the value
accumulated at the time the error was detected.
EXAMPLES
The command
printf '%s %s %s\n' Good Morning World
results in the output:
Good Morning World
The following command produces the same output.
printf '%2$s %s %1$s\n' World Good Morning
Here is an example that prints the first 6 characters of $PATH left-
adjusted in a 10-character field:
printf 'First 6 chars of %s are %-10.6s.\n' $PATH $PATH
If $PATH has the value /usr/bin:/usr/local/bin, then the above
command would print the following output:
First 6 chars of /usr/bin:/usr/local/bin are /usr/b .
The command:
printf "%5d%4d\n" 1 21 321 4321 54321
produces:
1 21
3214321
54321 0
The format operand is used three times to print all of the given
strings. The 0 in the last line of the output is supplied by printf
to satisfy the last %4d conversion specification.
DIAGNOSTICS
The following exit values are returned:
0 Successful completion.
>0 An error occurred.
SEE ALSO
awk(1), banner(1), bc(1), echo(1), printf(3S).
Licensed material--property of copyright holder(s)