本文共 2013 字,大约阅读时间需要 6 分钟。
– Start
几乎所有的语言都支持 printf 函数,awk 也不例外。下面我们来看一个简单的例子.
#! /usr/bin/awk -fBEGIN { printf("printf example:%-5.2f\n", 33.698);};{};END {};
结果如下:
printf example:33.70
%-5.2f 被称为格式符(format specifier), 格式符由以下几部分组成:
%[flags][width][.precision]conversion % - 5 .2 f
awk 支持如下转换符(conversion)。
转换符 描述 c ASCII 字符 (打印第一个字符) d 十进制整数 i 十进制整数 e 浮点数科学计数法 E 浮点数科学计数法 f 浮点数 g %e 或 %f, 取决于哪个更短, 删除尾部0 G %E 或 %f, 取决于哪个更短, 删除尾部0 u 无符号十进制整数 o 无符号八进制整数 x 无符号十六进制整数(a-f for 10 to 15) X 无符号十六进制整数(A-F for 10 to 15) %% % s 字符串
awk 支持如下标志(flag)
标志 描述 举例 - 左对齐 |3333.33 | 空格 在正数之前添加空格 | 3333.33|,|-3333.33| + 打印正负数符号 |+3333.33|,|-3333.33| 0 数字前面补0 |003333.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|
awk 精度(precision)的意义。
转换符 精度意义 %d,%i,%o,%u,%x,%X 最少数字位数,如果数字位数少于精度,添加前缀0 %e, %E 最少数字位数,如果数字位数少于精度,添加后缀0 %f 小数的位数 %g, %G 最多数字位数 %s 字符位数
#! /usr/bin/awk -fBEGIN { # 用星号实现动态宽度和精度 printf("printf example:%-*.*f\n", 5, 2, 33.698);};{};END {};
如果你不想打印,而是想格式化一个字符串,然后把它保存到一个变量中,该怎么办呢?试一试 sprintf 函数吧。
#! /usr/bin/awk -fBEGIN { str=sprintf("%5.2f", 33.698); print str;};{};END {};
– 更多参见:
– 声 明:转载请注明出处 – Last Updated on 2015-10-28 – Written by ShangBo on 2015-10-28 – End