printf 命令模仿 C 程序库(library)里的 printf() 程序。
标准所定义,因此使用printf的脚本比使用echo移植性好。
printf 使用引用文本或空格分隔的参数,外面可以在printf中使用格式化字符串,还可以制定字符串的宽度、左右对齐方式等。默认printf不会像 echo 自动添加换行符,我们可以手动添加 \n。
printf 命令的语法:

printf  format-string  [arguments...]

参数说明:

  • format-string: 为格式控制字符串
  • arguments: 为参数列表。

实例如下:

$ echo "Hello, Shell"
Hello, Shell
$ printf "Hello, Shell\n"
Hello, Shell
$

接下来,我来用一个脚本来体现printf的强大功能:

#!/bin/bash

printf "%-10s %-8s %-4s\n" 姓名 性别 体重kg
printf "%-10s %-8s %-4.2f\n" 郭靖 男 66.1234
printf "%-10s %-8s %-4.2f\n" 杨过 男 48.6543
printf "%-10s %-8s %-4.2f\n" 郭芙 女 47.9876 

执行脚本,输出结果如下所示:
姓名 性别 体重kg
郭靖 男 66.12
杨过 男 48.65
郭芙 女 47.99

%s %c %d %f都是格式替代符
%-10s 指一个宽度为10个字符(-表示左对齐,没有则表示右对齐),任何字符都会被显示在10个字符宽的字符内,如果不足则自动以空格填充,超过也会将内容全部显示出来。
%-4.2f 指格式化为小数,其中.2指保留2位小数。

更多实例:

#!/bin/bash# format-string为双引号
printf "%d %s\n" 1 "abc"# 单引号与双引号效果一样
printf '%d %s\n' 1 "abc" # 没有引号也可以输出
printf %s abcdef# 格式只指定了一个参数,但多出的参数仍然会按照该格式输出,format-string 被重用
printf %s abc defprintf "%s\n" abc defprintf "%s %s %s\n" a b c d e f g h i j# 如果没有 arguments,那么 %s 用NULL代替,%d 用 0 代替
printf "%s and %d \n" 

执行脚本,输出结果如下所示:

1 abc
1 abc
abcdefabcdefabc
def
a b c
d e f
g h i
j  and 0

printf的转义序列

序列 说明
\a 警告字符,通常为ASCII的BEL字符
\b 后退
\c 抑制(不显示)输出结果中任何结尾的换行字符(只在%b格式指示符控制下的参数字符串中有效),而且,任何留在参数里的字符、任何接下来的参数以及任何留在格式字符串中的字符,都被忽略
\f 换页(formfeed)
\n 换行
\r 回车(Carriage return)
\t 水平制表符
\v 垂直制表符
\\ 一个字面上的反斜杠字符
\ddd 表示1到3位数八进制值的字符。仅在格式字符串中有效
\0ddd 表示1到3位的八进制值字符

实例

$ printf "a string, no processing:<%s>\n" "A\nB"
a string, no processing:<A\nB>$ printf "a string, no processing:<%b>\n" "A\nB"
a string, no processing:<A
B>$ printf "konsy \a"
konsy $                  #不换行

Shell——printf 命令相关推荐

  1. linux中的shell有printf吗,Linux Shell系列教程之(八)Shell printf命令详解

    在上一篇:Linux Shell系列教程之(七)Shell输出这篇文章中,已经对Shell printf命令有了一个简略的介绍,本篇给大家详细介绍下Shell中的printf命令. 一.Shell p ...

  2. Linux Shell脚本入门教程系列之(八)Shell printf命令详解

    本文是Linux Shell脚本系列教程的第(八)篇,更多shell教程请看:Linux Shell脚本系列教程 在上一篇:Linux Shell系列教程之(七)Shell输出这篇文章中,已经对She ...

  3. Shell printf 命令

    上篇博文我们说了 Shell echo-使用echo实现更复杂的输出格式控制 这篇博文我们来学习 Shell 的另一个输出命令 printf. 语法 printf 命令模仿 C 程序库(library ...

  4. shell printf命令:格式化输出语句

    printf 命令用于格式化输出, 是echo命令的增强版.它是C语言printf()库函数的一个有限的变形,并且在语法上有些不同. 注意:printf 由 POSIX 标准所定义,移植性要比 ech ...

  5. shell--6、Shell printf 命令

    printf 命令模仿 C 程序库(library)里的 printf() 程序. 标准所定义,因此使用printf的脚本比使用echo移植性好. printf 使用引用文本或空格分隔的参数,外面可以 ...

  6. 【Shell牛客刷题系列】SHELL21 格式化输出:来看个printf命令的小彩蛋~

    该系列是基于牛客Shell题库,针对具体题目进行查漏补缺,学习相应的命令. 刷题链接:牛客题霸-Shell篇. 该系列文章都放到专栏下,专栏链接为:<专栏:Shell>.欢迎关注专栏~ 本 ...

  7. matlab printf格式化输出,Shell printf格式化输出命令

    printf 是 awk 的重要格式化输出命令,本节我们先介绍一下 printf 命令如何使用. 需要注意,在 awk 中可以识别 print 输出动作和 printf 输出动作(区别是:print ...

  8. Shell printf格式化输出命令

    printf 是 awk 的重要格式化输出命令,本节我们先介绍一下 printf 命令如何使用. 需要注意,在 awk 中可以识别 print 输出动作和 printf 输出动作(区别是:print ...

  9. linux中printf命令,Linux中printf命令使用实例

    在编写shell脚本时,我们使用echo打印到标准输出.echo是一个简单的命令,但其功能有限,想要更好的控制输出格式,可以使用printf命令. printf的语法格式: # printf 格式 参 ...

最新文章

  1. Python 使用 Flask框架记录
  2. 上传图片到linux返回url,Springboot 将前端传递的图片上传至Linux服务器并返回图片的url(附源码)...
  3. android 中如何模拟back键
  4. 剑指offer之找到链表里面包含环的入口节点
  5. 妲己机器人需要什么条件才能使用_estar零封YTG:平头哥快乐电竞,只有妲己没亚瑟,差评...
  6. 计算机桌面图标教案,计算机教案模板
  7. 今年双12全天 邮政、快递企业共揽收邮(快)件达4.6亿件
  8. JSF----事件处理----实时事件
  9. 内外兼修的移动办公伴侣:联想YOGA S730评测体验
  10. 软件开发项目 衡量指标_不衡量开发人员—衡量项目
  11. 当我在浏览器输入 www.baiu.com 之后发生了什么
  12. stripe海外支付php教程
  13. 关于计算机应用梦想作文,我为梦想而努力700字作文,为梦想而奋斗作文800字
  14. Python多线程-手慢无的真相
  15. 配置完dcom需要重启计算机,DCOM电脑自动重启(win7系统一直反复重启)
  16. 阿拉尔市谷歌高清卫星地图下载
  17. 【矩阵论】5. 线性空间与线性变换——生成子空间
  18. 多激光雷达外参标定算法与源码解析(一):基于BLAM的建图模块
  19. 那个可能会改变世界的参议员
  20. 数据库云管平台 zCloud v3.5发布,智能化和国产数据库支持能力再增强

热门文章

  1. 剖析Caffe源码之ImageDataLayer
  2. (TTSR)Learning Texture Transformer Network for Image Super-Resolution
  3. HTML5表单提交和PHP环境搭建
  4. 爬虫入门学习:爬取股票论坛信息
  5. 监督学习之knn、naive bayes、决策树算法实验_机器学习基本概念
  6. python找图是什么模块-python中模块查找的原理与方法详解
  7. Guojiz网址导航系统PHP网站源码
  8. linux mysql connector_fd_在CentOS里使用MySQL Connector/C++
  9. ci持续集成工程师前景_『中级篇』docker之CI/CD持续集成-项目生成镜像(76)
  10. 帝国cms listinfo.php,帝国CMS动态列表应用之在列表中显示指定的会员组会员发布的信息...