码迷,mamicode.com
首页 > 其他好文 > 详细

格式化打印(一)

时间:2015-06-27 09:54:21      阅读:162      评论:0      收藏:0      [点我收藏+]

标签:awk应用

我们编写的许多脚本可以很好地实现对数据的操作,但没有对输出进行适当的格式化。这是因为基本的print语句所能做的工作有限。因为awk的大多数功能是产生报告,因此以整齐的样式产生格式化报告是很重要的。程序filesum可以很好地处理数据,但它的报告缺乏整齐的格式。

awk提供的printf可以代替print语句,printf是借用了C程序设计语言。printf语句和print语句一样可以打印一个简单的字符串。

awk ‘ BEGIN { printf ("Hello, world\n") }‘

首先可以看出,printf和print的主要区别是printf没有提供自动换行功能。必须明确地为它指定"\n" 。

printf语句的完整语法由两部分组成:

printf ( for mat-expression [, arguments] )

其中的圆括号是可选的。第一部分是一个用来描述格式的表达式,通常以引号括起的字符串常量的形式提供。第二部分是一个参数列表,例如变量名列表,它和格式说明相对应。在格式说明前面有一个百分号(%) ,而格式说明符号为下表列出的字符之一。两个主要的格式说明符是s和d, s表示字符串,d表示十进制整数

在printf的格式说明符

格式说明符 功能
%c 打印单个ASCII 字符
printf("The character is %c\n",x)
输出: The character is A
%d 打印一个十进制数
printf("The boy is %d years old\n",y)
输出:The boy is 15 years old
%e 打印数字的e 记数法形式
printf("z is %e\n",z) 打印: z is 2.3e+0 1
%f 打印一个浮点数
printf("z is %f\n", 2.3 * 2)
输出: z is 4.600000
%o 打印数字的八进制
printf("y is %o\n",y)
输出:z is 17
%s 打印一个字符串
print("The name of the culprit is %s\n",$1)
输出:The name of the culprit is Bob Smith
%x 打印数字的十六进制值
printf("y is %x\n",y)
输出:x is f

下例在程序filenum的规则2中用printf产生一个输出。它输出不同的两个字段上的字符串和十进制值:

printf("%d\t%s\n", $5, $9)

该语句输出$5的值,后面是制表符\t和$9、然后输出一个换行符(\n)。对每个格式说明必须提供一个相应的参数。

参考资料:http://www.linuxawk.com/communication/526.html

版权声明:本文为博主原创文章,未经博主允许不得转载。

格式化打印(一)

标签:awk应用

原文地址:http://blog.csdn.net/xiyangyang052/article/details/46654563

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!