00. 目录
01. 命令概述
printf命令格式化并输出结果到标准输出。
printf 命令模仿 C 程序库(library)里的 printf() 程序。
printf 使用引用文本或空格分隔的参数,外面可以在printf中使用格式化字符串,还可以制定字符串的宽度、左右对齐方式等。默认printf不会像 echo 自动添加换行符,我们可以手动添加 \n。
02. 命令格式
printf FORMAT [ARGUMENT]...
printf OPTION
- 1
- 2
03. 常用选项
--help
显示 帮助信息, 然后 结束
--version
显示 版本信息, 然后 结束
- 1
- 2
- 3
- 4
格式替代符
- %b 相对应的参数被视为含有要被处理的转义序列之字符串。
- %c ASCII字符。显示相对应参数的第一个字符
- %d, %i 十进制整数
- %e, %E, %f 浮点格式
- %g %e或%f转换,看哪一个较短,则删除结尾的零
- %G %E或%f转换,看哪一个较短,则删除结尾的零
- %o 不带正负号的八进制值
- %s 字符串
- %u 不带正负号的十进制值
- %x 不带正负号的十六进制值,使用a至f表示10至15
- %X 不带正负号的十六进制值,使用A至F表示10至15
- %% 字面意义的%
转义序列
- \a 警告字符,通常为ASCII的BEL字符
- \b 后退
- \c 抑制(不显示)输出结果中任何结尾的换行字符(只在%b格式指示符控制下的参数字符串中有效),而且,任何留在参数里的字符、任何接下来的参数以及任何留在格式字符串中的字符,都被忽略
- \f 换页(formfeed)
- \n 换行
- \r 回车(Carriage return)
- \t 水平制表符
- \v 垂直制表符
- \ 一个字面上的反斜杠字符
- \ddd 表示1到3位数八进制值的字符,仅在格式字符串中有效
- \0ddd 表示1到3位的八进制值字符
04. 参考示例
4.1 输出字符串
[deng@localhost ~]$ printf "hello itcast\n"
hello itcast
[deng@localhost ~]$
- 1
- 2
- 3
4.2 输出字符串不换行
[deng@localhost ~]$ printf "hello world"
hello world[deng@localhost ~]$
- 1
- 2
4.3 格式控制输出
[deng@localhost ~]$ cat test.sh
printf "%-10s %-8s %-4s\n" 姓名 性别 体重kg
printf "%-10s %-8s %-4.2f\n" 郭靖 男 66.1234
printf "%-10s %-8s %-4.2f\n" 杨过 男 48.6543
printf "%-10s %-8s %-4.2f\n" 郭芙 女 47.9876
[deng@localhost ~]$ ./test.sh
姓名 性别 体重kg
郭靖 男 66.12
杨过 男 48.65
郭芙 女 47.99
[deng@localhost ~]$
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
%s %c %d %f都是格式替代符
%-10s 指一个宽度为10个字符(-表示左对齐,没有则表示右对齐),任何字符都会被显示在10个字符宽的字符内,如果不足则自动以空格填充,超过也会将内容全部显示出来。
%-4.2f 指格式化为小数,其中.2指保留2位小数。
4.4 格式控制输出
[deng@localhost ~]$ printf "%d %s\n" 1 "hello world"
1 hello world
[deng@localhost ~]$
- 1
- 2
- 3
4.5 格式控制字符串为单引号
[deng@localhost ~]$ printf '%d %s\n' 1 "hello world"
1 hello world
[deng@localhost ~]$
- 1
- 2
- 3
4.6 格式控制输出字符串没有引号
[deng@localhost ~]$ printf "%s\n" helloworld
helloworld
[deng@localhost ~]$ printf %s helloworld
helloworld[deng@localhost ~]$
- 1
- 2
- 3
- 4
4.7 格式控制输出数字
[deng@localhost ~]$ printf "%d %d %d %d\n" 11 22 33 44
11 22 33 44
[deng@localhost ~]$
- 1
- 2
- 3
4.8 显示字符
[deng@localhost ~]$ printf "%c %c\n" 1 89
1 8
[deng@localhost ~]$
- 1
- 2
- 3
4.9 输出百分比
[deng@localhost ~]$ printf "%d%%\n" 80
80%
[deng@localhost ~]$
- 1
- 2
- 3
评论记录:
回复评论: