0%

shell printf格式化输出

shell也可以优雅的输出。

用法

1
printf: usage: printf [-v var] format [arguments]

参数

常用格式控制符

格式符说明
%s字符串
%d,%i十进制整数
%u不带正负号的十进制值
%o不带正负号的八进制值
%x不带正负号的十六进制值,使用a至f表示10至15
%X不带正负号的十六进制值,使用A至F表示10至15
%e,%E,%f浮点格式
%g%e或%f转换,看哪一个较短,则删除结尾的零
%G%E或%f转换,看哪一个较短,则删除结尾的零
%b相对应的参数被视为含有要被处理的转义序列之字符串
%cASCII字符。显示相对应参数的第一个字符
%%字面意义的%

常用转义序列

格式符说明
\f换页(formfeed)
\n换行
\r回车(Carriage return)
\t水平制表符
\v垂直制表符
\一个字面上的反斜杠字符
\ddd表示1到3位数八进制值的字符,仅在格式字符串中有效
\0ddd表示1到3位的八进制值字符

使用场景举例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# cat printf.sh
#!/bin/bash
printf "%-20s\t%-30s\n" "格式符" "说明"
printf "%-20s\t\033[33m%-30s\033[0m\n" '%s' '字符串'
printf '%-20s\t%-30s\n' '%d' '十进制整数'
printf "%-20s\t%-30s\n" "%u" '不带正负号的十进制值'
printf "%-20s\t%-30s\n" "%o" "不带正负号的八进制值"
printf "\033[32m%-20s\033[0m\t%-1.15f\n" %f 3.14159265358

# sh printf.sh
格式符 说明
%s 字符串
%d 十进制整数
%u 不带正负号的十进制值
%o 不带正负号的八进制值
%f 3.141592653580000

说明

  • 默认printf没有换行,需要手动添加\n;
  • %-20s指一个宽度为20的左对齐字符。如果不满20个字符则以空格填充,如超出20个字符也会显示所有内容;
  • -表示左对齐,+或者空则表示右对齐;
  • %-1.15f 格式化小数,其中.15指保留15位小数,不足位数补零;
  • 在格式控制符和输出字符串中单引号与双引号效果相同,但是不能将所有的输出字符串用一个引起来,必须每个字段一对引号;
  • 格式控制中也可以引入字体颜色。
-------------End of article. I appreciate whoever read and leave commends on articles.-------------

本文标题:shell printf格式化输出

文章作者:冷月无声

发布时间:2017年08月05日 - 21:08

最后更新:2019年03月04日 - 18:03

原始链接:https://www.lengyuewusheng.com/shell-printf%E6%A0%BC%E5%BC%8F%E5%8C%96%E8%BE%93%E5%87%BA.html

许可协议:本博客所有文章除特别声明外,均采用 BY-NC-SA 3.0许可协议。转载请注明出处!