printf函数

 

打印输出时,可能需要指定字段间的空格数,从而把列排整齐。在print函数中使用制表符并不能保证得到想要的输出,因此,可以用printf函数来格式化特别的输出。

printf函数返回一个带格式的字符串给标准输出,如同C语言中的printf语句一样。printf语句包括一个加引号的控制串,控制串中可能嵌有若干格式说明和修饰符。控制串后面跟一个逗号,之后是一列由逗号分隔的表达式。printf函数根据控制串中的说明编排这些表达式的格式。与print函数不同的是, printf不会在行尾自动换行。因此,如果要换行,就必须在控制串中提供转义字符\n。

每一个百分号和格式说明都必须有一个对应的变量。要打印百分号就必须在控制串中给出两个百分号。请参考print转义字符和printf修饰符。格式说明由百分号引出,另外还列出了printf所用的格式说明符。

printf使用的转义字符

转义字符 定义
c 字符
s 字符串
d 十进制整数
ld 十进制长整数
u 十进制无符号整数
lu 十进制无符号长整数
x 十六进制整数
lx 十六进制长整数
o 八进制整数
lo 八进制长整数
e 用科学记数法(e 记数法)表示的浮点数
f 浮点数
g 选用e或f中较短的一种形式

printf的修饰符

字符 定义
- 左对齐修饰符
# 显示8 进制整数时在前面加个0
显示16 进制整数时在前面加0x
+ 显示使用d 、e 、f 和g 转换的整数时,加上正负号+或-
0 用0而不是空白符来填充所显示的值

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

打印变量时,输出所在的位置称为"域"(field),域的宽度(width)是指该域中所包含的字符个数。下面这些例子中, printf控制串里的管道符(竖杠)是文本的一部分, 用于指示格式的起始与结束。
范例

$ echo "Linux" | awk '{printf "|%-15s|\n",$1}'
|Linux          |

说明:对于echo命令的输出,Linux是经管道发给awk。printf函数包含一个控制串。百分号让printf做好准备,它要打印一个占15个格、向左对齐的字符串,这个字符串夹在两个竖杠之间,并且以换行符结尾。百分号后的短划线表示左对齐。控制串后面跟了一个逗号和$1。printf将根据控制串中的格式说明来格式化字符串Linux。

范例

$ echo "Linux" | awk '{printf "|%15s|\n",$1}'
|          Linux|

说明:字符串Linux被打印成一个占15 格、向右对齐的字符串,夹在两个竖杠之间,以
换行符结尾。

范例

$ cat employees
Tom   Jones 4424 5/12/66 543354
Mary  Adams 5346 11/4/63 28765
Sally Chang 1654 7/22/54 650000
Billy Black 1683 9/23/44 336500
$ awk '{printf "The name is: %-15s ID is %8d\n",$1,$3}' employees
The name is Tom             ID is 4424
The name is Mary            ID is 5346
The name is Sally           ID is 1654
The name is Billy           ID is 1683

说明:要打印的字符串放置在两个双引号之间。第一个格式说明符是%-15s,它对应的参数是$1,紧挨着控制串的右半边引号后面的那个逗号。百分号引出格式说明:短划线表示左对齐,15s表示占15格的字符串。这条命令用来打印一个左对齐、占15格的字符串,后面跟着字符串的ID和一个整数。

格式:%8d表示在字符串的这个位置打印$2 的十进制(整数)值。这个整数占8格,向右对齐。您也可以选择将加引号的字符串和表达式放在圆括号里。

 
原文地址:http://www.linuxawk.com/jiaocheng/83.html

awk中printf的用法的更多相关文章

  1. shell编程系列21--文本处理三剑客之awk中数组的用法及模拟生产环境数据统计

    shell编程系列21--文本处理三剑客之awk中数组的用法及模拟生产环境数据统计 shell中的数组的用法: shell数组中的下标是从0开始的 array=("Allen" & ...

  2. awk 中 FS的用法

    在openwrt文件 ar71xx.sh中 查询设备类型时,有这么一句, machine=$(awk 'BEGIN{FS="[ \t]+:[ \t]"} /machine/ {pr ...

  3. Linux shell awk中printf使用

    printf 是 awk 的重要格式化输出命令 printf格式化输出内容 格式:     printf format,item1,item2...     要点: 1,printf输出时要指定格式f ...

  4. awk中printf的使用说明

    printf()函数是格式化输出函数, 一般用于向标准输出设备按规定格式输出信息.在编写程序时经常会用到此函数.printf()函数的调用格式为: printf("", ); 其中 ...

  5. java中printf的用法

    目前printf支持以下格式:           %c        单个字符           %d        十进制整数           %f        十进制浮点数        ...

  6. shell中awk printf的用法

    打印输出时,可能需要指定字段间的空格数,从而把列排整齐.在print函数中使用制表符并不能保证得到想要的输出,因此,可以用printf函数来格式化特别的输出. printf函数返回一个带格式的字符串给 ...

  7. 转载:shell中awk printf的用法

    转载:http://www.linuxawk.com/jiaocheng/83.html 6. printf函数   打印输出时,可能需要指定字段间的空格数,从而把列排整齐.在print函数中使用制表 ...

  8. shell编程系列17--文本处理三剑客之awk动作中的表达式用法

    shell编程系列17--文本处理三剑客之awk动作中的表达式用法 awk动作表达式中的算数运算符 awk动作中的表达式用法总结: 运算符 含义 + 加 - 减 * 乘 / 除 % 模 ^或** 乘方 ...

  9. php中sprintf与printf函数用法区别

    下面是一个示例:四舍五入保留小数点后两位  代码如下 复制代码 <?php$num1 = 21;echo sprintf("%0.2f",$num1)."<b ...

随机推荐

  1. 11.6 mpstat:CPU信息统计

        mpstat 是Multiprocessor Statistics的缩写,是一种实时系统监控工具.mpstat命令会输出CPU的一些统计信息,这些信息存放在/proc/stat文件中.在多CP ...

  2. 10.19 dig:域名查询工具

    dig命令 是常用的域名查询工具,可以用于测试域名系统的工作是否正常.  dig命令的参数选项及说明 @<DNS服务器地址>    指定进行城名解析的域名服务器.当不希望使用本机默认的DN ...

  3. PHP相关session的知识

    由于http协议是一种无状态协议,所以没有办法在多个页面间保持一些信息.例如,用户的登录状态,不可能让用户每浏览一个页面登录一次.session就是为了解决一些需要在多页面间持久保持一种状态的机制.P ...

  4. 用navigation的大致图

  5. Python分析离散心率信号(上)

    Python分析离散心率信号(上) 一些理论和背景 心率包含许多有关信息.如果拥有心率传感器和一些数据,那么当然可以购买分析包或尝试一些可用的开源产品,但是并非所有产品都可以满足需求.也是这种情况.那 ...

  6. VB Aspose.Pdf 字体变小方格问题处理

    宋体是这样写的:SimSun原先以为是:宋体 先定义字体,在PDF中无法设置,这个找了很久,原来是使用:FontRepository.FindFont方式,这个坑了很久,很多都说是setFont,压根 ...

  7. Spring Cloud03: Eureka Client 服务提供者

    一.创建一个子工程并引入配置如下: <dependency> <groupId>org.springframework.cloud</groupId> <ar ...

  8. 「题解」PA2019 Terytoria

    本文将同步发布于: 洛谷博客: csdn: 博客园: 因为简书系统升级,所以本文未在简书上发布. 题目 题目链接:洛谷 P5987.LOJ 3320.官网. 题意概述 在二维平面直角坐标系上,有一个长 ...

  9. vue给元素动态绑定样式

    <div :style="{ color: activeColor, fontSize: fontSize + 'px' }"></div> data () ...

  10. 这应该是把Java内存区域讲的最清楚的一篇文章

    基本问题: 介绍下 Java 内存区域(运行时数据区) Java 对象的创建过程(五步,建议能默写出来并且要知道每一步虚拟机做了什么) 对象的访问定位的两种方式(句柄和直接指针两种方式) 拓展问题: ...