printf

Format and print data From the phrase “print formatted” printf "format" arguments

[me@linuxbox ~]$ printf "I formatted the string: %s\n" foo
I formatted the string: foo  
[me@linuxbox ~]$ printf "I formatted '%s' as a string.\n" foo
I formatted 'foo' as a string.
Specifier Description
d Format a number as a signed decimal integer.
f Format and output a floating-point number
o Format an integer as an octal number
s Format a string
x Format an integer as a hexadecimal number using lowercase
a to f where needed.
X Same as X but use uppercase letters.
% Print a literal % symbol (i.e., specify %%)

Common printf Data type Specifiers

[me@linuxbox ~]$ printf "%d, %f, %o, %s, %x, %X\n" 380 380 380 380 380 380
380, 380.000000, 574, 380, 17c, 17C

Optional components may be added to conversion specifier: %[flags][width][.precision]conversion_specification

Component Description
flags There are five different flags:
# : Use the “alternate format” for output. This varies by
data type. For o (octal number) conversion, the output
is prefixed with 0. For x and X (Hexadecimal number)
conversions, the output is prefixed with 0x or 0X.
0 : Pad the output with zeros. Fill field with
leading zeros.
- : Left-align the output. Default is right-aligned.
' ' : Produce a leading space for positive numbers.
+ : Sign positive numbers. Default, only sign
negative numbers.
width A number specifying the minimum field width.
.precision For floating-point numbers, specify the number of digits
of precision to be output after the decimal point. For
string conversion, precision specifies the number of
characters to output.

printf Conversion Specification Components

[me@linuxbox ~]$ printf "Line: %05d %15.3f Result: %+15d\n" 1071 3.14156295 
32589
Line: 01071         3.142 Result:          +32589