博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ksh 格式化输出
阅读量:4050 次
发布时间:2019-05-25

本文共 3553 字,大约阅读时间需要 11 分钟。

-- Start

几乎所有的语言都支持 printf 函数,ksh 也不例外。下面我们来看一个简单的例子.

#!/bin/kshprintf "printf example:%,30.6f" 9876543210.0123456789;
结果如下:

printf example:          9,876,543,210.012346
%,30.6f 被称为格式符(format specifier), 格式符由以下几部分组成:

%[flags][width][.precision]conversion  %  ,      30      .6         f

  • %是必须的, 任何格式符都由百分号开始.
  • flags 是可选的, 详见下表.
  • width 是可选的, 表示输出的宽度.
  • precision 可选的, precision 依赖于 conversion, 详见下表.
  • conversion 是必须的, 表示如何格式化参数, 详见下表.
ksh 支持如下转换符(conversion)。

转换符           描述 d               十进制整数,也可进制转换 i               十进制整数 u               无符号十进制整数  e               浮点数科学计数法 E               浮点数科学计数法 f               浮点数 g               %e 或 %f, 取决于哪个更短, 删除尾部0 G               %E 或 %f, 取决于哪个更短, 删除尾部0 o               无符号八进制整数 x               无符号十六进制整数(a-f for 10 to 15) X               无符号十六进制整数(A-F for 10 to 15) c               ASCII 字符 (打印第一个字符) %               % s               字符串 b                %s,支持更多的转义字符 H                %s,转成 HTML 字符,如:空格转成   P                %s,把 egrep 风格的正则表达式转成 ksh 风格 R                %s,把 ksh 风格的正则表达式转成 egrep 风格 q                %s,打印成 $'...' 风格 n               到字符串的长度 (date format)T  格式化日期

日期和时间转换符

转换符(Conversion)	描述(Description)Y	                4位数字的年(前面补0)m	                月,01-12d	                日,01-31H	                小时,00-23M	                分钟,00-59S	                秒,00-60I	                小时,01-12N	                纳秒,000000000 - 999999999P	                本地敏感, PM or AMp	                本地敏感,pm or amz	                时区偏移量, 如 +0800Z	                时区s	                从格林威治时间1970-01-01 00:00:00起的秒数B	                月的完整拼写b/h	                月的缩写A	                星期的完整拼写a	                星期的缩写y	                年的后两位数字(前面补0)C	                年的前两位数字(前面补0)j	                一年的第几天,001-366e	                日,1-31R	                24小时时间,如 18:05T	                24小时时间,如 18:05:19r	                12小时时间, 如 06:05:19 pmD	                美国格式的日期(月/日/年),如 02/09/2004F	                ISO 8601 日期, 如 2004-02-09c	                完整的日期和时间,如 Tue Oct  6 09:15:27 2015k	                完整的日期和时间,如 Tue Oct  6 09:18:22 EDT 2015l                   完整的日期和时间,如 Oct  6 09:19L                   完整的日期和时间,如  Tue Oct  6 09:20:17 EDT 2015

ksh 支持如下标志(flag)

标志         描述               举例-           左对齐             |3333.33 |空格         在正数之前添加空格    | 3333.33|,|-3333.33|+           打印正负数符号       |+3333.33|,|-3333.33|0           数字前面补0         |003333.33|,           添加千分位          |3,333.33|#(对于%o)    添加前缀0           |0515|#(对于%x)    添加前缀0x	      |0x1bc|#(对于%X)    添加前缀0X	      |0X1bc|#(对于%e)    添加小数点          |1.000000e+01|#(对于%E)    添加小数点          |1.000000E+01|#(对于%f)    添加小数点          | 10.000000|#(对于%g)    不删除尾部0         |10.4000|#(对于%G)    不删除尾部0         |10.4000|
ksh 精度(precision)的意义。

转换符                 精度意义%d,%i,%o,%u,%x,%X    最少数字位数,如果数字位数少于精度,添加前缀0%e, %E               最少数字位数,如果数字位数少于精度,添加后缀0%f                   小数的位数%g, %G               最多数字位数%s                   字符位数

一些例子。

#!/bin/ksh# %b 同 %s,支持更多的转义字符printf "%b\n" 'hello\nworld';# %H 同 %s,转成 HTML 字符,如:空格转成  printf "%H\n" "Here are real < and > characters";# %P 同 %s,把 egrep 风格的正则表达式转成 ksh 风格printf "%P\n" '(.*\.o|.*\.obj|core)+';# %R 同 %s,把 ksh 风格的正则表达式转成 egrep 风格printf "%R\n" '+(*.o|*.c)';# %q 同 %s,打印成 $'...' 风格printf "print %q\n" "a string with ' and \" in it"# %d,进制转换printf '42 is %.3.5d in base 5\n' 42# %n 得到字符串的长度printf "hello, world\n%n" msglen;print $msglen;# %(date format)T, 格式化日期printf "%(It is now %Y-%m-%d %H:%M:%S)T\n" "$(date)"

-- 更多参见:

-- 声 明:转载请注明出处

-- Last Updated on 2015-10-06

-- Written by ShangBo on 2015-10-06
-- End

你可能感兴趣的文章
捕鱼忍者(ninja fishing)之游戏指南+游戏攻略+游戏体验
查看>>
iphone开发基础之objective-c学习
查看>>
iphone开发之SDK研究(待续)
查看>>
计算机网络复习要点
查看>>
Variable property attributes or Modifiers in iOS
查看>>
NSNotificationCenter 用法总结
查看>>
C primer plus 基础总结(一)
查看>>
剑指offer算法题分析与整理(三)
查看>>
Ubuntu 13.10使用fcitx输入法
查看>>
pidgin-lwqq 安装
查看>>
mint/ubuntu安装搜狗输入法
查看>>
C++动态申请数组和参数传递问题
查看>>
opencv学习——在MFC中读取和显示图像
查看>>
C/C++中关于动态生成一维数组和二维数组的学习
查看>>
JVM最简生存指南
查看>>
JVM并发机制探讨—内存模型、内存可见性和指令重排序
查看>>
持续可用与CAP理论 – 一个系统开发者的观点
查看>>
nginx+tomcat+memcached (msm)实现 session同步复制
查看>>
c++字符数组和字符指针区别以及str***函数
查看>>
c++类的操作符重载注意事项
查看>>