Shell printf格式字符串

格式字符

格式符说明格式符说明
%a将参数按double解释,并以C99十六进制浮点常量形式打印%i与%d相同
%A与%a相同,但打印的格式化后字符串中字母大写%n

将到目前为止打印的字符数赋值给对应参数中指定的变量。不能指定数组索引。如果指定的变量是数组,则会将值赋值给数组的第0个元素。

%b将参数中支持的反斜杠转义字符转以后再打印%o将参数按无符号八进制数打印
%c将参数按char解释,只打印参数的第一个字符%q将参数按可以做为shell输入重用的格式打印
%d将参数按有符号十进制整数打印%s将参数按字面意思解释为字符串
%e将参数按double解释,并以科学计数法的形式打印%(FORMAT)T输出使用strftime(3)格式化字符串FORMAT格式化后的日期-时间字符串。参数为自纪元起的时间秒数,此外有两个特殊值:-1表示当前时间,-2表示shell启动时间。如果没有提供参数,则默认使用当前时间。strftime(3)日期时间格式字符串支持除%N、%:z、%::z、%:::z外的所有date命令日期时间输出格式符
%E与%e相同,但打印的格式化后字符串中字母大写%u将参数按无符号小数打印
%f将参数按浮点数打印%x将参数按无符号十六进制数打印
%g将参数按double解释,并以%e或%f的形式打印%X与%x相同,但打印的格式化后字符串中字母大写
%G与%G相同,但是%E的形式打印%%不做任何转换,输出百分号%

格式修饰符

修饰符说明
<N>指定域最小宽度,如果打印的文本较短,则用空格填充,如果打印的文本较长,则正常打印。
.与域宽度一起使用,当打印的文本较长时会截断文本。如果“.”后没有指定宽度,默认为0,则不会打印文本。如果“.”前也指定了宽度,则会在截断文本后补足到指定的宽度。如:printf "%2.1s\n" abc。
*宽度在字符串或数字之前通过参数指定,可以动态的指定打印文本的宽度。如:printf "%*s\n" 20 "test"。
#数字格式选择符,见后面数字格式选择。
-左对齐,即右侧填充字符,默认为右对齐。如:printf "%-*s\n" 20 "test"。
0用零填充数字,而不是空格。如:printf "%010d\n" 123。
(空格)如果杀死正数,前面加空格,如果是负数前面加“-”。如:printf "% d\n" 123。
+打印数字的符号,正数前加“+”,负数前加“-”。如:printf "%+d\n" 123。
'将十进制数按当前LC_NUMERIC将千位分组分隔符应用于输出的整数部分,如:printf "%'d\n" 12345567890。

数字格式选择

格式说明
%#o八进制数总是以0开头,除非它本身是零,如:printf "%o\n%#o\n"   123 123。
%#x、%#X十六进制数总是以“0x”/“0x”开头,除非它是零,如:printf "%x\n%#x\n"   123 123。
%#g、%#G打印的浮点数后面跟随0,直到满足精度所需的位数为止,如printf "%g\n%#g\n"   123 123。

小数格式的精度是通过“.”后面跟着精度位数来定义的,如printf "%.4f\n" 1.23。还可以通过“.*”来从参数中获取精度,然后再打印小数。如:printf "%.*f\n" 10 1.23。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值