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' (SeeMath
      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 (SeeNondecimal-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' (See
      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 (SeeOptions), 'gawk' warns about this.  Other
      versions of 'awk' may print invalid values or do something else
      entirely.  (d.c.)