printf 是 awk 的重要格式化输出命令,本节我们先介绍一下 printf 命令如何使用。

需要注意,在 awk 中可以识别 print 输出动作和 printf 输出动作(区别是:print 会在每个输出之后自动加入一个换行符;而 printf 是标准格式输出命令,并不会自动加入换行符,如果需要换行,则需要手工加入换行符),但是在 Bash 中只能识别标准格式化输出命令 printf。所以我们在本小节中介绍的是标准格式化输出命令 printf。

printf 命令格式如下:

[root@localhost ~]# printf '输出类型输出格式' 输出内容

输出类型:

%ns:输出字符串。n 是数字,指代输出几个字符;

%ni:输出整数。n 是数字,指代输出几个数字‘’

%m.nf: 输出浮点数。m 和 n 是数字,指代输出的整数位数和小数位数。如 %8.2f 代表共输出 8 位数,其中 2 位是小数,6 位是整数;

输出格式:

\a: 输出警告声音;

\b:输出退格键,也就是 Backspaced 键;

\f:清除屏幕;

\n:换行;

\r:回车,也就是 Enter 键;

\t:水平输出退格键,也就是 Tab 键;

\v:垂直输出退格键,也就是 Tab 键;

为了演示 printf 命令,我们需要修改一下刚刚 cut 命令使用的 student.txt 文件。文件内容如下:

[root@localhost ~]# vi student.txt

ID Name PHP Linux MySQL Average

1 Liming 82 95 86 87.66

2 Sc 74 96 87 85.66

3 Gao 99 83 93 91.66

我们使用 printf 命令输出这个文件的内容,如下:

[root@localhost ~]# printf '%s' $(cat student.txt)

IDNamegenderPHPUnuxMySQl_Average1LjmingM82 958687.662ScM74968785.663GaoM998393 91.66

[root@localhost ~]#

输出结果十分混乱。这就是 printf 命令,如果不指定输出格式,则会把所有输出内容连在一起输出。其实文本的输出本身就是这样的,cat 等文本输出命令之所以可以按照格式漂亮地输出,那是因为 cat 命令已经设定了输出格式。

那么,为了用 printf 输出合理的格式,应该这样做:

[root@localhost ~]# printf '%s\t %s\t %s\t %s\t %s\t %s\t\n' $(cat student.txt)

#注意:在printf命令的单引号中只能识别格式输出符号,而手工输入的空格是无效的

ID Name PHP Linux MySQL Average

1 Liming 82 95 86 87.66

2 Sc 74 96 87 85.66

3 Gao 99 83 93 91.66

再强调一下:在 printf 命令的单引号中输入的任何空格都不会反映到格式输出中,只有格式输出符号才能影响 printf 命令的输出结果。

解释一下这个命令:因为我们的文档有6列,所以使用 6 个"%s"代表这 6 列字符串,每个字符串之间用"\t"分隔;最后还要加入"\n",使得每行输出都换行,否则这些数据还是会连成一行的。

如果不想把成绩当成字符串输出,而是按照整型和浮点型输出,则要这样做:

[root@localhost ~]# printf '%i\t %s\t %i\t %i\t %i\t %8.2f\t\n'\

$(cat student.txt | grep -v Name)

1 Liming 82 95 86 87.66

2 Sc 74 96 87 85.66

3 Gao 99 83 93 91.66

先解释"cat student.txt|grep -v Name"这条命令。这条命令会把第一行标题取消,剩余的内容才用 printf 格式化输出。在剩余的内容中,第 1、3、4、5 列为整型,所以用"%i"输出;而第 2 列是字符串,所以用"%s"输出;而第 6 列是小数,所以用"%8.2f"输出。"%8.2f"代表可以输出 8 位数,其中有 2 位是小数,有 6 位是整数。

printf 命令是 awk 中重要的输出动作,不过 awk 中也能识别 print 动作,区别刚刚已经介绍了,当然稍后我们还会举例来说明一下这两个动作的区别。注意:在 Bash 中只有 printf 命令。另外,printf 命令只能格式化输出具体数据,不能直接输出文件内容或使用管道符,所以 printf 命令的格式还是比较特殊的。

matlab printf格式化输出,Shell printf格式化输出命令相关推荐

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

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

  2. Shell printf格式化输出命令

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

  3. Go 学习笔记(46)— Go 标准库之 fmt(输入/输出格式化参数、Printf/Fprintf/Sprintf区别、Println/Fprintln/Sprintln 区别)

    1. 概述 import "fmt" fmt 包实现了类似 C 语言 printf 和 scanf 的格式化 I/O .格式化动作( verb )源自 C 语言但更简单. 2. P ...

  4. C语言scanf()函数格式化输入和printf()格式化输出。

    scanf函数格式化输入和printf格式化输出 要实现的功能如下 完整源代码实现如下 要实现的功能如下 scanf函数格式化输入字符串和字符,printf格式化输出字符串和字符. 完整源代码实现如下 ...

  5. go语言 格式化输出fmt.Printf()使用大全

    [简介] fmt 包实现了格式化 I/O 函数,类似于 C 的 printf 和 scanf.格式"占位符"衍生自 C,但比 C 更简单. [打印] 占位符: [一般] %v 相应 ...

  6. C方式格式化输出(printf 函数详解)

    本篇将重点介绍C语言的格式化输出函数 printf.当然该函数在C++程序中也可以使用. 目录 printf 函数构成及标准函数语句 格式字符种类的介绍 printf 函数的具体细节实现 格式符数量与 ...

  7. Go语言基础--Printf格式化输出、Scanf格式化输入详解

    几种输出方式的区别 Print.Println .Printf .Sprintf .Fprintf都是fmt 包中的公共方法,在需要打印信息时需要用到这些函数,那么这些函数有什么区别呢? Print: ...

  8. sed 分隔符打印_字符截取:cut,格式化输出:printf,字符截取:awk,文件或命令输出编辑:sed...

    cut 选项 文件名 -f 列号 提取第几列 -d 分隔符 指定分隔符把行分成多列 不能以空格为分隔符. [root@localhost ~]# cattestfile no. name sex sc ...

  9. C语言如何返回格式化日期时间(格式化时间)?(将日期和时间以字符串格式输出)ctime()、asctime()、localtime()、strftime()

    文章目录 ctime()函数: asctime()函数 获取自定义格式化时间(有bug,当时间为个位数时,没有在前面自动补零) 改成函数接口形式(传入字符指针) 20220107 优化后(能自动补零) ...

最新文章

  1. C# 合并DLL, 合并DLL进入EXE
  2. VTK:平面源用法实战
  3. ASP实现数据库事务处理的方法
  4. ENVI5.4完美实现MODIS NDVI数据格式转换和投影变换
  5. c语言单元二实验报告,C语言第七次实验报告
  6. irule jar包无法导入_poi表格的导入导出
  7. lettuce配置_skywalking与lettuce哨兵模式
  8. cocos2dx中的Rapidjson
  9. 【RN6752】模拟高清AHD芯片或成为车机新标配
  10. 用crontab命令实现每天定时的病毒扫描
  11. 第三季-第4课-Linux应用程序地址布局
  12. MATLAB实现DES算法子密钥生成
  13. Python+Appium自动化搭建新手教程
  14. 【sduoj】前端JSZip库的使用
  15. 基于全志a31s的camrea驱动调试(gc2145型号)
  16. 高手 读书笔记-1.精英社会的神话
  17. dBm和dB(纯计数单位)
  18. 自己开发iOS版按键精灵--TTouch
  19. cf596B. Wilbur and Array
  20. SPA项目开发 之 登录注册

热门文章

  1. JAVA UDP套接字编程
  2. 一个MLDN学习的博客
  3. mysql在 union 与group by后order by排序混乱
  4. 评宏杉科技的CloudSAN架构
  5. Libiconv移植到Hi3536
  6. python多因素电力预测——基于LSTM神经网络
  7. 《go语言实战》阅读笔记01
  8. Axure 8.1.0.3381 激活码 10月20号更新 亲测可用
  9. KNN算法的matlab学习日志123
  10. Protues使用教程