gawk: Control Letters
5.5.2 Format-Control Letters
----------------------------
A format specifier starts with the character '%' and ends with a
"format-control letter"--it tells the 'printf' statement how to output
one item. The format-control letter specifies what _kind_ of value to
print. The rest of the format specifier is made up of optional
"modifiers" that control _how_ to print the value, such as the field
width. Here is a list of the format-control letters:
'%c'
Print a number as a character; thus, 'printf "%c", 65' outputs the
letter 'A'. The output for a string value is the first character
of the string.
NOTE: The POSIX standard says the first character of a string
is printed. In locales with multibyte characters, 'gawk'
attempts to convert the leading bytes of the string into a
valid wide character and then to print the multibyte encoding
of that character. Similarly, when printing a numeric value,
'gawk' allows the value to be within the numeric range of
values that can be held in a wide character. If the
conversion to multibyte encoding fails, 'gawk' uses the low
eight bits of the value as the character to print.
Other 'awk' versions generally restrict themselves to printing
the first byte of a string or to numeric values within the
range of a single byte (0-255). (d.c.)
'%d', '%i'
Print a decimal integer. The two control letters are equivalent.
(The '%i' specification is for compatibility with ISO C.)
'%e', '%E'
Print a number in scientific (exponential) notation. For example:
printf "%4.3e\n", 1950
prints '1.950e+03', with a total of four significant figures, three
of which follow the decimal point. (The '4.3' represents two
modifiers, discussed in the next node.) '%E' uses 'E' instead of
'e' in the output.
'%f'
Print a number in floating-point notation. For example:
printf "%4.3f", 1950
prints '1950.000', with a total of four significant figures, three
of which follow the decimal point. (The '4.3' represents two
modifiers, discussed in the next node.)
On systems supporting IEEE 754 floating-point format, values
representing negative infinity are formatted as '-inf' or
'-infinity', and positive infinity as 'inf' or 'infinity'. The
special "not a number" value formats as '-nan' or 'nan' (Math
Definitions).
'%F'
Like '%f', but the infinity and "not a number" values are spelled
using uppercase letters.
The '%F' format is a POSIX extension to ISO C; not all systems
support it. On those that don't, 'gawk' uses '%f' instead.
'%g', '%G'
Print a number in either scientific notation or in floating-point
notation, whichever uses fewer characters; if the result is printed
in scientific notation, '%G' uses 'E' instead of 'e'.
'%o'
Print an unsigned octal integer (Nondecimal-numbers).
'%s'
Print a string.
'%u'
Print an unsigned decimal integer. (This format is of marginal
use, because all numbers in 'awk' are floating point; it is
provided primarily for compatibility with C.)
'%x', '%X'
Print an unsigned hexadecimal integer; '%X' uses the letters 'A'
through 'F' instead of 'a' through 'f' (
Nondecimal-numbers).
'%%'
Print a single '%'. This does not consume an argument and it
ignores any modifiers.
NOTE: When using the integer format-control letters for values that
are outside the range of the widest C integer type, 'gawk' switches
to the '%g' format specifier. If '--lint' is provided on the
command line (Options), 'gawk' warns about this. Other
versions of 'awk' may print invalid values or do something else
entirely. (d.c.)