目录

printf 简介

printf 转义字符

printf 修饰符

printf 格式说明符

示例1

示例2

示例3


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控制串里的管道符(竖杠)是文本的一部分, 用于指示格式的起始与结束。

示例1

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

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

示例2

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

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

示例3

$ 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格,向右对齐。您也可以选择将加引号的字符串和表达式放在圆括号里。

linux shell awk 中 printf 用法相关推荐

  1. linux shell脚本字符串连接符,学习Linux shell脚本中连接字符串的方法

    这篇文章主要介绍了Linux shell脚本中连接字符串的方法,如果想要在变量后面添加一个字符,可以用一下方法: 代码如下: $value1=home $value2=${value1}"= ...

  2. linux here用法,linux shell的here document用法(cat EOF)

    什么是Here Document? Here Document 是在Linux Shell 中的一种特殊的重定向方式,它的基本的形式如下 cmd << delimiter Here Doc ...

  3. linux shell比大小expr,Linux shell命令中expr(示例代码)

    在Linux shell命令中expr虽然不是很起眼,但是它的作用是非常大的!到目前为止,我个人看来最大的作用就是两个--四则运算和字符串的操作. 先说四则运算,在Shell中四则运算不能简简单单的加 ...

  4. Linux Shell脚本中压缩包解压到目标目录下

    在Linux Shell脚本中,把一个压缩文件解压到目标目录下,使用如下代码: tar -xvf server.tar -C /opt/ 上述命令实现了把当前目录下的server.tar的压缩包,解压 ...

  5. 在 Linux shell 字符串中,百分比符号是什么?

    当你正在学习如何完全使用 Linux shell 时,你可以能会觉得自己能够对字符串进行操作. 记住,今天q&一个文章的超级用户对读者的一个奇怪问题有答案. 今天,回答会话的问题来自超级用户的 ...

  6. Linux Shell - 脚本中自动确认需要输入确认的命令

    文章目录 Linux Shell - 脚本中自动确认需要输入确认的命令 1.yum 命令 2.其它命令 Linux Shell - 脚本中自动确认需要输入确认的命令 1.yum 命令 通过指定 -y ...

  7. linux脚本用户输入,如何在Linux shell脚本中提示用户输入

    本篇文章给大家介绍关于如何在Linux shell脚本中提示用户输入?下面来看具体的内容. 我们首先来看一下命令# read var # read -s "Waiting for input ...

  8. shell脚本中的$用法

    shell脚本中的$用法 变量 含义 $0 shell脚本的文件名 $1 ~ $n 添加到shell脚本中的各参数: 即执行shell脚本时后跟的内容: $1为第1参数,$2为第2参数 $? shel ...

  9. linux shell awk用法

    Awk 是一种非常好的语言,同时有一个非常奇怪的名称.在本系列(共三篇文章)的第一篇文章中,Daniel Robbins 将使您迅速掌握 awk 编程技巧.随着本系列的进展,将讨论更高级的主题,最后将 ...

最新文章

  1. 活学活用,CSS清除浮动的4种方法
  2. 博鳌论坛国际粮食安全-林裕豪:从玉农业对话丰收节贸易会
  3. 手握顶会顶刊论文,自信满满面试算法岗竟被刷?
  4. [学习总结]6、Android异步消息处理机制完全解析,带你从源码的角度彻底理解
  5. 修改linux kernel参数 semopm
  6. Bzoj2882 工艺
  7. jetbrains webstorm汉化包
  8. Python杨辉三角形
  9. 托业单词表Part2
  10. 事物运动的状态和方式是谁提出的_为什么信息是事物运动的状态和方式??
  11. 如何在Excel中调节折线图和柱形图(组合图)的高低(位置),让图中的折线和柱形不会出现重叠
  12. 微服务下蓝绿发布、滚动发布、灰度发布等方案,必须懂!
  13. java常用英语单词大全
  14. Xilinx SDSoc 加载opencv库
  15. 融云 CTO 岑裕:出海技术前沿探索和排「坑」实践
  16. 讲讲多拨的额外骚操作(多拨附加教程)
  17. 制作往图片里插入视频,视频添加到图片上播放
  18. iOS 官方文档翻译
  19. 基于angularjs的单页面实例_基于AngularJs的单页面程序
  20. 叉车限速5公里是否是强制规定?

热门文章

  1. 解决GNS3桥接本地网卡后无法跟本地网卡通信的故障。
  2. Hudson升级异常及解决办法
  3. DPI — nDPI — 安装部署与应用示例
  4. 架构师之路 — API 经济 — 身份认证系统
  5. DPDK — 安装部署(CentOS 7)
  6. Linux 操作系统原理 — 多处理器架构
  7. NanoPi NEO Air使用十五:使用V4L2驱动USB摄像头
  8. 模组使用之NB-IoT模组的工作模式、PSM、DRX和eDRX状态说明
  9. DIY三通道程控直流电源
  10. 深入浅出Node.js游戏服务器开发--分布式聊天服务器搭建