UNIX printf命令

语法

printf format [string …]

用途

进行格式输出

printf 中的转义序列

\a  :警告字符,通常为ASII的BEL字符

\b  :后退

\c  :抑制(不显示)输出结果中的任何结尾的换行字符,而且,任何留在参数里的字符、任何接下来的参数以及任何留在格式字符串中的字符,都被忽略

\f  :换页(formfeed)

\n  :换行

\r  :回车

\t  :水平制表符

\v  :垂直制表符

\\  :一个字面上的反斜线字符

\ddd  :表示1到3位数八进制值字符。仅在格式字符串中有效

\0ddd  :表示1到3位的八进制值字符

printf对转义序列的处理可能会让人觉得混淆。默认情况下,转移序列只在格式字符串中会被特别对待,也就是说,出现在参数字符串里的转义序列不会被解释:

> printf "a string, no processing: <%s>\n" "A\nB"

>a string, no processing: <A\nB>

当你使用 %b 格式指示符时,printf 会解释参数数字符串中的转义序列

> printf "a string, no processing: <%s>\n" "A\nB"

>a string, no processing: <A

B>

无论是在格式字符串内还是在使用 %b 所打印的参数字符串里,大部分的转移序列都是被相同对待。

printf 格式指示符

%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

%%  :字面意义的%

printf 命令可用来指定输出字段的宽度以及进行对齐操作,完整的格式表达式如下:

%flags width.precision format-specifier

输出字段中的 width 为数字值。指定字段宽度时,字段的内容默认为向右对齐,如果你希望文字向左靠齐,必须指定 - 为标志,如果字符串少于宽度值时,默认情况下将以空白填充

>printf "|%10s|\n" hello

>|     hello|

>printf "|%-10s|\n" hello

>|hello     |

precision修饰符是可选用的。对十进制或者浮点数值而言,它可以控制数字出现于结果中的位数,对字符串而言,他控制将要打印的字符串的最大字符数。

>printf "%.5d\n" 15

>00015

>printf "%.10s\n" "a very long string"

>a very lon

> printf "%.2f\n" 123.4567

>123.46

printf 的标志

-  :将字段里已经格式化的值向左对齐

空白(space)  :在正值前置一个空格,在负值前值一个负号

+  :总是在数值之前放置一个正号或者负号,即便是正值也是

#  :下列形势选择其一:%o有一个前置的o;%x与%X分别有前置的ox与OX,%e,%E与%f总是在结果中有一个小数点,%g与%G为没有结尾的零。

0  :以零填补输出,而非空白。这仅发生在字段宽度大于转换后的情况

转载于:https://www.cnblogs.com/effort0209/archive/2013/06/08/3127196.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值