Shell学习总结---printf格式化输出

功能:

printf是awk的重要格式化输出命令

注意事项:

  1. printf输出动作和printf输出动作的区别:
    在 awk 中可以识别 print 输出动作和 printf 输出动作,区别是:print 会在每个输出之后自动加入一个换行符;而 printf 是标准格式输出命令,并不会自动加入换行符,如果需要换行,则需要手工加入换行符,但是在 Bash 中只能识别标准格式化输出命令 printf。所以我们在本小节中介绍的是标准格式化输出命令 printf。
  2. 在 printf 命令的单引号中输入的任何空格都不会反映到格式输出中,只有格式输出符号才能影响 printf 命令的输出结果。
  3. 在 Bash 中只有 printf 命令。
  4. printf 命令只能格式化输出具体数据,不能直接输出文件内容或使用管道符。所以 printf 命令的格式还是比较特殊的。

命令格式:

[root@localhost ~] printf '输出类型输出格式' 输出内容
  1. 输出类型:
    %ns:输出字符串。n为数字,指代输出几个字符;
    %ni:输出整数。n是数字,指代输出几个数字;
    %m.nf:输出浮点数。m和n是数字,指代输出的整数位数和小数位数。如%8.2f代表共输出 8 位数,其中 2 位是小数,6 位是整数;
  2. 输出格式:
    \a:输出警告声音;
    \b:输出退格键,即Backspaced键;
    \f:清除屏幕;
    \n:换行;
    \r:回车,也就是 Enter 键;
    \t:水平输出退格键,即Tab 键;
    \v:垂直输出退格键,即Tab 键;
    实例1:使用printf命令输出文件内容,不指定输出格式
[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
[root@localhost ~] printf '%s' $(cat student.txt)
IDNamegenderPHPUnuxMySQl_Average1LjmingM82 958687.662ScM74968785.663GaoM998393 91.66

缺点:输出结果十分混乱。如果不指定输出格式,printf会把所有输出内容连在一起输出。(cat 等文本输出命令之所以可以按照格式漂亮地输出,是因为 cat 命令已经设定了输出格式)。
实例2:使用printf命令输出文本内容,指定输出格式

[root@localhost ~] printf '%s\t %s\t %s\t %s\t %s\t %s\t\n' $(cat student.txt)
#注意:在printf命令的单引号中只能识别格式输出符号,而手工输入的空格是无效的
#文档有6列,所以使用 6 个"%s"代表这 6 列字符串,每个字符串之间用"\t"分隔;最后还要加入"\n",使得每行输出都换行,否则这些数据还是会连成一行
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

实例2:按照整型和浮点型输出

[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 位是整数。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值