printf

按指定的格式显示数据


语法格式

printf format [arguments]
printf [--help] [--version]

命令简介

利用printf命令,可以按指定的格式显示指定的参数数据。其中,format是用于控制显示格式的格式字符串,arguments是一个或多个需要显示的数据参数,如字符串以及各种数值等。printf命令能够解释转义字符,能够解释C语言printf()函数支持的几乎所有的百分号“%”格式字符串,能够按照指定的格式显示字符串或数值参数。

当给定的参数数量多于格式字符串时,格式字符串可以重用。例如,“printf "%s\n" abc xyz”命令能够分两行显示abc与xyz。当给定的参数数量不足时,根据格式字符串的类型,可以显示为空串或数值0。例如,“printf %s%d”命令会显示一个0。

附加的转义字符能够中止printf命令的进一步输出。例如,“printf "A%sC\c%sE" B D”命令仅输出到ABC即停止运行。

为了区别于Shell内置的printf命令,可以使用绝对路径名(/usr/bin/printf)运行printf命令,或使用 “env printf …”命令运行printf命令。

此外,printf命令不输出换行字符,必要的话需要用户自己控制。

printf命令能够解释下列转义字符:

\"  双引号。

\\  反斜线。

\a  警示音。

\b  退格符。

\c  禁止进一步处理,终止命令的继续运行。

\e  ESC字符。

\f  换页符。

\n  换行符。

\r  回车字符。

\t  制表符。

\v  纵向制表符。

\NNN  采用1~3位八进制数表示的字符。

\xHH  采用1~2位十六进制数表示的字符。

\uHHHH  采用4位十六进制数表示的Unicode(ISO/IEC 10646)字符。

\UHHHHHHHH  采用8位十六进制数表示的Unicode(ISO/IEC 10646)字符。

printf命令能够解释下列格式字符串:

%%  单个百分号字符。

%b  这是一个特殊的格式字符串,除了八进制的转义序列“\0ooo”(其中ooo是0~3位八进制数值)之外,还能够解释处理给定参数中的转义字符。

%diouxXfeEgGcs  是“%d”或“%s”等格式字符串的缩写,分别表示按十进制数值或字符串格式输出给定的参数数据等。

应用实例

1. 使用绝对路径名或env命令运行printf命令,否则结果可能不同。

$ printf "A%sC\c%sE\n" B D
ABC\cDE
$ env printf "A%sC\c%sE" B D
ABC$

2. 使用“%b”格式字符串显示含有转义字符的字符串。

$ env printf %b "1st line\non 2nd line\t go on\n"
1st line
on 2nd line       go on
$

3. 在格式字符串中增加转义字符时,格式字符串前后必须加双引号,否则printf命令不会解释格式字符串中的转义字符。

$ env printf "%s\n%s\t%s\n"  "1st line" "on 2nd line" "go on"
1st line
on 2nd line       go on
$ env printf %s\n%s\t%s\n "1st line" "on 2nd line" "go on"
1st linenon 2nd linetgo onn$

索引:A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z