Using awk

The printf statement

awk's printf statement is the same as that in C, except that the * format specifier is not supported. The printf statement has the general form:

printf format, expr1, expr2, ..., exprn

where format is a string that contains both information to be printed and specifications on what conversions to perform on the expressions in the argument list, as in the table below. Each specification begins with a ``%'', ends with a letter that determines the conversion, and can include any of the following:

left-justify expression in its field

pad field to this width as needed; fields that begin with a leading 0 are padded with zeros

maximum string width or digits to right of decimal point

awk printf conversion characters

Character Prints expression as
%c single character
%d decimal integer
%e [-]d.dprecisionE[+-]dd
%f [-]ddd.dprecision
%g e or f conversion, whichever is shorter, with nonsignificant zeros suppressed
%o unsigned octal number
%s string
%x unsigned hexadecimal number
%% print a %; no argument is converted

Here are some examples of printf statements with the corresponding output:

printf "%d", 99/2 49
printf "%e", 99/2 4.950000e+01
printf "%f", 99/2 49.500000
printf "%6.2f", 99/2 49.50
printf "%g", 99/2 49.5
printf "%o", 99/2 61
printf "%06o", 99/2 000061
printf "%x", 99/2 31
printf "|%s|", "January" |January|
printf "|%10s|", "January" | January|
printf "|%-10s|", "January" |January |
printf "|%.3s|", "January" |Jan|
printf "|%10.3s|", "January" | Jan|
printf "|%-10.3s|", "January" |Jan |
printf "%%" %
The default output format of numbers is %.6g; this can be changed by assigning a new value to OFMT. OFMT also controls the conversion of numeric values to strings for concatenation and creation of array subscripts.

Next topic: Output into files
Previous topic: Output separators

© 2003 Caldera International, Inc. All rights reserved.
SCO OpenServer Release 5.0.7 -- 11 February 2003