0%
shell也可以优雅的输出。
用法
1
| printf: usage: printf [-v var] format [arguments]
|
参数
常用格式控制符
格式符 |
说明 |
%s |
字符串 |
%d,%i |
十进制整数 |
%u |
不带正负号的十进制值 |
%o |
不带正负号的八进制值 |
%x |
不带正负号的十六进制值,使用a至f表示10至15 |
%X |
不带正负号的十六进制值,使用A至F表示10至15 |
%e,%E,%f |
浮点格式 |
%g |
%e或%f转换,看哪一个较短,则删除结尾的零 |
%G |
%E或%f转换,看哪一个较短,则删除结尾的零 |
%b |
相对应的参数被视为含有要被处理的转义序列之字符串 |
%c |
ASCII字符。显示相对应参数的第一个字符 |
%% |
字面意义的% |
常用转义序列
格式符 |
说明 |
\f |
换页(formfeed) |
\n |
换行 |
\r |
回车(Carriage return) |
\t |
水平制表符 |
\v |
垂直制表符 |
\ |
一个字面上的反斜杠字符 |
\ddd |
表示1到3位数八进制值的字符,仅在格式字符串中有效 |
\0ddd |
表示1到3位的八进制值字符 |
使用场景举例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| # cat printf.sh #!/bin/bash printf "%-20s\t%-30s\n" "格式符" "说明" printf "%-20s\t\033[33m%-30s\033[0m\n" '%s' '字符串' printf '%-20s\t%-30s\n' '%d' '十进制整数' printf "%-20s\t%-30s\n" "%u" '不带正负号的十进制值' printf "%-20s\t%-30s\n" "%o" "不带正负号的八进制值" printf "\033[32m%-20s\033[0m\t%-1.15f\n" %f 3.14159265358
# sh printf.sh 格式符 说明 %s 字符串 %d 十进制整数 %u 不带正负号的十进制值 %o 不带正负号的八进制值 %f 3.141592653580000
|
说明
- 默认printf没有换行,需要手动添加\n;
- %-20s指一个宽度为20的左对齐字符。如果不满20个字符则以空格填充,如超出20个字符也会显示所有内容;
- -表示左对齐,+或者空则表示右对齐;
- %-1.15f 格式化小数,其中.15指保留15位小数,不足位数补零;
- 在格式控制符和输出字符串中单引号与双引号效果相同,但是不能将所有的输出字符串用一个引起来,必须每个字段一对引号;
- 格式控制中也可以引入字体颜色。