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的形式打印 %% 不做任何转换,输出百分号%

格式修饰符

修饰符 说明
指定域最小宽度,如果打印的文本较短,则用空格填充,如果打印的文本较长,则正常打印。
. 与域宽度一起使用,当打印的文本较长时会截断文本。如果“.”后没有指定宽度,默认为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。

你可能感兴趣的:(shell,Shell内建命令)