GNU Info

Info Node: (sh-utils.info)printf invocation

(sh-utils.info)printf invocation


Next: yes invocation Prev: echo invocation Up: Printing text
Enter node , (file) or (file)node

`printf': Format and print data
===============================

   `printf' does formatted printing of text. Synopsis:

     printf FORMAT [ARGUMENT]...

   `printf' prints the FORMAT string, interpreting `%' directives and
`\' escapes in the same way as the C `printf' function.  The FORMAT
argument is re-used as necessary to convert all of the given ARGUMENTs.

   `printf' has one additional directive, `%b', which prints its
argument string with `\' escapes interpreted in the same way as in the
FORMAT string.

   `printf' interprets `\0ooo' in FORMAT as an octal number (if OOO is
0 to 3 octal digits) specifying a character to print, and `\xhhh' as a
hexadecimal number (if HHH is 1 to 3 hex digits) specifying a character
to print.

   `printf' interprets two character syntaxes introduced in ISO C 99:
`\u' for 16-bit Unicode characters, specified as 4 hex digits HHHH, and
`\U' for 32-bit Unicode characters, specified as 8 hex digits HHHHHHHH.
`printf' outputs the Unicode characters according to the LC_CTYPE part
of the current locale, i.e. depending on the values of the environment
variables `LC_ALL', `LC_CTYPE', `LANG'.

   The processing of `\u' and `\U' requires a full-featured `iconv'
facility. It is activated on systems with glibc 2.2 (or newer), or when
`libiconv' is installed prior to the sh-utils. Otherwise the use of
`\u' and `\U' will give an error message.

   An additional escape, `\c', causes `printf' to produce no further
output.

   The only options are a lone `--help' or `--version'.  Note: Common
options.

   The Unicode character syntaxes are useful for writing strings in a
locale independent way. For example, a string containing the Euro
currency symbol

     $ /usr/local/bin/printf '\u20AC 14.95'

   will be output correctly in all locales supporting the Euro symbol
(ISO-8859-15, UTF-8, and others). Similarly, a Chinese string

     $ /usr/local/bin/printf '\u4e2d\u6587'

   will be output correctly in all chinese locales (GB2312, BIG5,
UTF-8, etc).

   Note that in these examples, the full pathname of `printf' has been
given, to distinguish it from the GNU `bash' builtin function `printf'.

   For larger strings, you don't need to look up the hexadecimal code
values of each character one by one. ASCII characters mixed with \u
escape sequences is also known as the JAVA source file encoding. You
can use GNU recode 3.5c (or newer) to convert strings to this encoding.
Here is how to convert a piece of text into a shell script which will
output this text in a locale- independent way:

     $ LC_CTYPE=zh_CN.big5 /usr/local/bin/printf \
         '\u4e2d\u6587\n' > sample.txt
     $ recode BIG5..JAVA < sample.txt \
         | sed -e "s|^|/usr/local/bin/printf '|" -e "s|$|\\\\n'|" \
         > sample.sh


automatically generated by info2www version 1.2.2.9